-
Notifications
You must be signed in to change notification settings - Fork 9
CodingGuideForAndroidListView
yunkwanho edited this page May 23, 2016
·
1 revision
表示広告種類は、画像の有無、テキストの長さなどによって、以下の3タイプあります
広告枠フォーマット | 表示広告種類 |
---|---|
リストビュー型 |
一行テキスト |
アイコン画像+テキスト |
|
メイン画像+テキスト |
パターン | オブジェクト | クラス | タグ名(android:tag) |
---|---|---|---|
アイコン画像+テキスト |
アイコン画像 |
ImageView |
AMoAdNativeViewIconImage |
メイン画像+テキスト |
メイン画像 |
ImageView |
AMoAdNativeViewMainImage |
共通 |
タイトルショート |
TextView |
AMoAdNativeViewTitleShort |
共通 |
タイトルロング |
TextView |
AMoAdNativeViewTitleLong |
共通 |
サービス名 |
TextView |
AMoAdNativeViewServiceName |
一行テキスト広告のサンプル
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dp" >
<TextView
android:id="@+id/TitleShort"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/ServiceName"
android:ellipsize="end"
android:singleLine="true"
android:tag="AMoAdNativeViewTitleShort"/>
<TextView
android:id="@+id/ServiceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:ellipsize="end"
android:singleLine="true"
android:tag="AMoAdNativeViewServiceName"/>
</RelativeLayout>
アイコン画像+テキスト広告のサンプル
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp" >
<ImageView
android:id="@+id/IconImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:scaleType="fitXY"
android:tag="AMoAdNativeViewIconImage" />
<TextView
android:id="@+id/TitleShort"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/IconImage"
android:ellipsize="end"
android:singleLine="true"
android:tag="AMoAdNativeViewTitleShort"/>
<TextView
android:id="@+id/TitleLong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/TitleShort"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/IconImage"
android:ellipsize="end"
android:singleLine="true"
android:tag="AMoAdNativeViewTitleLong"/>
<TextView
android:id="@+id/ServiceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/TitleLong"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/IconImage"
android:ellipsize="end"
android:tag="AMoAdNativeViewServiceName"/>
</RelativeLayout>
メイン画像+テキスト広告のサンプル
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp" >
<ImageView
android:id="@+id/IconImage"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:scaleType="fitXY"
android:tag="AMoAdNativeViewIconImage" />
<TextView
android:id="@+id/ServiceName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dp"
android:layout_toRightOf="@+id/IconImage"
android:ellipsize="end"
android:tag="AMoAdNativeViewServiceName"/>
<ImageView
android:id="@+id/MainImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/IconImage"
android:layout_marginTop="5dp"
android:scaleType="fitXY"
android:tag="AMoAdNativeViewMainImage" />
<TextView
android:id="@+id/TitleShort"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/MainImage"
android:layout_marginTop="5dp"
android:ellipsize="end"
android:singleLine="true"
android:tag="AMoAdNativeViewTitleShort"/>
<TextView
android:id="@+id/TitleLong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/TitleShort"
android:ellipsize="end"
android:singleLine="true"
android:tag="AMoAdNativeViewTitleLong"/>
</RelativeLayout>
Tip
|
クリック領域の設定 : 「android:tag="AMoAdNativeViewLink"」でクリック領域の設定ができます。 指定しない場合はレイアウト全体がクリック領域になります。 |
クリック領域の設定サンプル
<RelativeLayout ... >
...
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:tag="AMoAdNativeViewLink"
android:text="アプリをダウンロードする" />
...
</RelativeLayout>
一行テキスト広告の実装
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AMoAdNativeViewManager.getInstance(this).prepareAd(SID, 1, 5);
ArrayAdapter<String> adapter == new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1);
BaseAdapter nativeAdAdapter == AMoAdNativeViewManager.getInstance(this).createAdapter(SID, TAG, adapter, R.layout.native_text);
listView.setAdapter(nativeAdAdapter);
}
Tip
|
SIDとは
管理画面で広告枠を作成したときに発行されるIDです。
SDKの機能を呼び出すために複数の箇所から参照しますので、
文字列定数などに保持しておくことをお勧めします。
|
Tip
|
TAGとは
同一SIDで複数の広告を表示するための識別IDです。SID + TAG1、SID + TAG2で分けて使うことで同じ広告が表示されることを避けます。 |
Tip
|
広告表示位置の開始位置(beginIndex)とは
一覧上、広告の表示開始位置
|
Tip
|
広告表示位置の間隔(interval)とは
広告と次の広告との間隔
|
アイコン画像+テキスト広告の実装
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AMoAdNativeViewManager.getInstance(this).prepareAd(SID, 1, 5, true);
ArrayAdapter<String> adapter == new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1);
BaseAdapter nativeAdAdapter == AMoAdNativeViewManager.getInstance(this).createAdapter(SID, TAG, adapter, R.layout.native_icon);
listView.setAdapter(nativeAdAdapter);
}
メイン画像+テキスト広告の実装
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AMoAdNativeViewManager.getInstance(this).prepareAd(SID, 1, 5, true, true);
ArrayAdapter<String> adapter == new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1);
BaseAdapter nativeAdAdapter == AMoAdNativeViewManager.getInstance(this).createAdapter(SID, TAG, adapter, R.layout.native_image);
listView.setAdapter(nativeAdAdapter);
}
Tip
|
利用可能なリスト形式(BaseAdapterが使える)UIの例
ListViewGridView AdapterViewFlipper StackView Gallery |
AMoAdNativeViewCoder coder == new AMoAdNativeViewCoder();
coder.setTouchType(AMoAdNativeViewCoder.TouchType.DoubleTap);
BaseAdapter adAdapter == AMoAdNativeViewManager.getInstance(this).createAdapter(SID, TAG, mAdapter, R.layout.template, coder);
setListAdapter(adAdapter);
AMoAdNativeViewManager.getInstance(context).renderAd(sid, tag, templateView, new AMoAdNativeFailureListener() {
@Override
public void onFailure(String sid, String tag, View templateView) {
// 広告の取得失敗を検知
}
});
該当するSIDのTAGの広告の取得結果などを通知する。
createAdapter関数にリスナーを渡す。
BaseAdapter adAdapter == AMoAdNativeViewManager.getInstance(this).createAdapter(SID, TAG, mAdapter, R.layout.template, new AMoAdNativeListener() {
@Override
public void onReceived(String sid, String tag, View templateView, AMoAdNativeListener.Result result) {
// 広告情報の取得処理が終わったら呼ばれる
if (result == AMoAdNativeListener.Result.Success) {
// ...
} else if (result == AMoAdNativeListener.Result.Failure) {
// ...
}
}
@Override
public void onIconReceived(String sid, String tag, View templateView, AMoAdNativeListener.Result result) {
// アイコン画像の取得処理が終わったら呼ばれる
if (result == AMoAdNativeListener.Result.Success) {
// ...
} else if (result == AMoAdNativeListener.Result.Failure) {
// ...
}
}
@Override
public void onImageReceived(String sid, String tag, View templateView, AMoAdNativeListener.Result result) {
// メイン画像の取得処理が終わったら呼ばれる
if (result == AMoAdNativeListener.Result.Success) {
// ...
} else if (result == AMoAdNativeListener.Result.Failure) {
// ...
}
}
@Override
public void onClicked(String sid, String tag, View templateView) {
// 広告がクリックされたら呼ばれる
}
});
setListAdapter(adAdapter);
ログをコンソールに出力する
AMoAdLogger.getInstance().setEnabled(true);
SDKログをキャッチする
AMoAdLogger.getInstance().setEnabled(true);
AMoAdLogger.getInstance().addAMoAdLoggerListener(new AMoAdLoggerListener() {
@Override
public void onLog(int level, String tag, String msg, Throwable throwable) {
// ログをキャッチする
}
});