AdMobの広告をPreferenceScreenで表示する
PreferenceActivityを使った設定画面に、AdMobの広告を追加します。表示の方法は2パターンです。
パターン1(設定項目の最後尾に追加)
一番下までスクロールすると設定項目の一つとして、広告が見えてくるようになります。まず、広告の入った設定項目を作ります。それをpreference.xmlで読み込みます。
admob_preference.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="http://schemas.android.com/apk/res/sample" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="50px"> <com.admob.android.ads.AdView android:id="@+id/ad" android:layout_width="fill_parent" android:layout_height="wrap_content" myapp:backgroundColor="#000000" myapp:primaryTextColor="#FFFFFF" myapp:secondaryTextColor="#CCCCCC" /> </LinearLayout>
preference.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="title"> <Preference android:selectable="false" android:layout="@layout/admob_preference" /> </PreferenceCategory> </PreferenceScreen>
パターン2(画面の最下部に表示)
こちらは、addContentViewを使用してレイアウトを被せる方法です。常に画面の下部に広告が表示されます。普通にやると、広告と最後の設定項目が被ってしまいます。そのため、最後の設定項目には広告の縦幅分のダミーを入れます。
dummy_preference.xml
<?xml version="1.0" encoding="utf-8"?> <View xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="http://schemas.android.com/apk/res/sample" android:id="@+id/aaaid" android:layout_width="fill_parent" android:layout_height="50dp"/>
preference.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="title"> <Preference android:key="key" android:title="title0" /> </PreferenceCategory> <Preference android:selectable="false" android:layout="@layout/dummy_preference" /> </PreferenceScreen>
MyActivity.java
[java]
public class MyActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);
AdView adView = new AdView(this);
adView.setVisibility(android.view.View.VISIBLE);
adView.requestFreshAd();
LayoutParams adLayoutParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
adView.setLayoutParams(adLayoutParams);
LinearLayout linearlayout = new LinearLayout(this);
linearlayout.addView(adView);
linearlayout.setGravity(Gravity.BOTTOM);
LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
addContentView(linearlayout, layoutParams);
}
}
[/java]