2011年12月18日日曜日

AdMob画像の場所に、代替画像を表示する

AdMob画像の場所に、代替画像を表示する

副題:待ち時間に、愛想笑い微笑みを

アプリの画面の表示と同時に、AdMob画像が表示されるのでは無い。
アプリの画面が表示された後、インターネットから広告のデータをダウンロードしてから、その広告データに基づきAdMob画像が表示されるのである。AdMob画像が物理画面の下端にあるのであれば気にはならない。

しかし、何も考慮せずに、AdMob画像を物理画面の上端に配置した場合、AdMob画像が表示された時、その画像がその位置に「挿入される」ということになるため、その画像の下に配置しているViewが、一斉に下にズレてしまう。このような振る舞いは、利用者に違和感を与える。
if(あなたの感じ方=="別に問題では無い。") return;

この問題への対処の方法として、AdMob画像を表示する位置に、予め別の画像を表示するようにしておいて、そこに後からAdMob画像を表示するようにすれば良い。
この方法を講じるためには、愛想笑い微笑みを描いた横320×縦50の画像を作成し、この画像をres>drawableディレクトリに入れておかねばならない。
if(あなたの画力=="苦笑い程度しか描く画力が無い") return;

下記のxmlで実装する。画像ファイル名はbanner.pngである。FrameLayoutを使うことにより、同一の場所に表示させることができる。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#a00"
    >
    <FrameLayout
        android:id="@+id/FrameLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:gravity="center"
        >
        <ImageView
            android:src="@drawable/banner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </ImageView>
        <LinearLayout
            android:id="@+id/AdMob"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
        </LinearLayout>
    </FrameLayout>
    <Button
        android:text="@string/Button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/FrameLayout"
        >
    </Button>
</RelativeLayout>

この方法だと、AdMob画像が表示される前も後もButtonが下にズレることは無い。かつ、AdMob画像が表示されるまでの短い時間ではあるが、愛想笑い微笑みの画像を表示させることができて、利用者を飽きさせない。
if(あなたの感想=="飽きはしないが、好感を持てるということも無い") return;

0 件のコメント:

コメントを投稿