NativeAdManager

한번에 다수의 NatvieAdItem 을 조회하여 사용할 수 있도록 NativeAdManager 클래스를 제공합니다.

아래는 NativeAdManager 를 사용하여 ListView 에 표시하는 예제입니다.

NativeAdSampleActivity

public class NativeAdSampleActivity extends Activity {

private NativeAdManager adManager = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main2);

adManager = new NativeAdManager(this, "native_ad", NativeAdItem.STYLE_LANDSCAPE | NativeAdItem.STYLE_ICON, 5);

adManager.setManagerListener(new NativeAdManagerListener() {

@Override

public void onFailure(int errCode) {

Log.d("tnkad", "native ad manager onFailure " + errCode);

}

@Override

public void onLoad() {

ListView listView = (ListView)findViewById(R.id.friend_list);

NativeAdSampleAdapter adapter = new NativeAdSampleAdapter(NativeAdSampleActivity.this, adManager);

listView.setAdapter(adapter);

}

});

adManager.prepareAds();

}

}

NativeAdSampleAdapter

public class NativeAdSampleAdapter extends BaseAdapter {

private Context context = null;

private NativeAdManager adManager = null;

public NativeAdSampleAdapter(Context context, NativeAdManager adManager){

this.context = context;

this.adManager = adManager;

}

@Override

public int getCount() {

return 10;

}

@Override

public Object getItem(int position) {

return adManager.getAdItemAt(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

LayoutInflater inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

convertView = inflater.inflate(R.layout.native_ad_item, null);

}

NativeAdItem adItem = (NativeAdItem)getItem(position);

ImageView iconView = (ImageView)convertView.findViewById(R.id.ad_icon);

iconView.setImageBitmap(adItem.getIconImage());

ImageView imageView = (ImageView)convertView.findViewById(R.id.ad_image);

imageView.setImageBitmap(adItem.getCoverImage());

TextView titleView = (TextView)convertView.findViewById(R.id.ad_title);

titleView.setText(adItem.getTitle());

TextView descView = (TextView)convertView.findViewById(R.id.ad_desc);

descView.setText(adItem.getDescription());

adItem.attachLayout((ViewGroup)convertView);

return convertView;

}

}

Layout XML

main2.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/main_layout"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@android:color/white"

>

<ListView

android:id="@+id/friend_list"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_below="@android:id/widget_frame"

/>

</LinearLayout>

native_ad_item.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:padding="6dp"

android:background="#ffffffff">

<ImageView

android:id="@+id/ad_icon"

android:layout_width="72dp"

android:layout_height="72dp"

android:layout_alignParentTop="true"

android:layout_alignParentLeft="true"

android:padding="4dp"

android:scaleType="fitXY" />

<TextView

android:id="@+id/ad_title"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/ad_icon"

android:layout_alignParentTop="true"

android:layout_marginTop="3dp"

android:layout_marginLeft="8dp"

android:gravity="center_vertical"

android:textColor="#ff020202"

android:textSize="17sp"

/>

<TextView

android:id="@+id/ad_desc"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/ad_icon"

android:layout_below="@id/ad_title"

android:layout_marginLeft="8dp"

android:layout_marginTop="8dp"

android:gravity="center_vertical"

android:textColor="#ff179dce"

android:textSize="13sp"

/>

<ImageView

android:id="@+id/ad_image"

android:layout_width="300dp"

android:layout_height="150dp"

android:layout_below="@id/ad_icon"

android:padding="4dp"

android:scaleType="fitXY" />

</RelativeLayout>

[NativeAdManager API]

1) 생성자

public NativeAdManager(Context context, String displayLogic, int adStyle, int adCount)

NativeAdManager 객체를 생성합니다.

Parameters

2) Manager Listener 설정하기

public void setManagerListener(NativeAdManagerListener listener)

광고의 로딩이 완료또는 실패했을 경우 호출 될 Listener 객체를 설정합니다. Listener 인터페이스는 아래와 같습니다.

NativeAdManager.Listener

public interface NativeAdManagerListener extends AdListener {

void onFailure(int errCode);

void onLoad();

}

  • onFailure(int errCode): 광고 로딩이 실패한 경우 호출됩니다.

  • onLoad() : 광고 로딩이 성공하면 호출됩니다.

3) 광고 로딩하기

public void prepareAds()

NativeAd 를 로딩합니다. 로딩이 완료되면 설정된 NativeAdManagerListener.onLoad() 가 호출됩니다.

4) 광고 가져오기

public NativeAdItem nextAdItem()

광고 로딩이 완료되면 nextAdItem() 을 호출하여 NativeAdItem 객체를 가져올 수 있습니다. 호출할때마다 새로운 NativeAdItem 객체를 반환합니다.

호출 수의 제한은 없으며 실제 로딩된 광고수보다 많이 호출되는 경우 로딩된 광고들이 다시 제공됩니다.

public NativeAdItem getAdItemAt(int index)

index 번째의 NativeAdItem 객체를 반환합니다. index 수에 제약은 없으며 index 수가 실제 로딩된 광고수(N) 보다 클 경우 modular 연산을 통하여 광고 객체를 반환합니다.

public int getUniqueAdCount()

prepareAds() 를 통하여 실제 로딩된 광고수를 반환합니다.