5. Native Ad‎ > ‎1) Android‎ > ‎

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
 파라메터 명칭 내용
 context현재 Activity 또는 Context 객체 
 displayLogic DisplayLogic  명칭 (참고 : 5) Display Logic )
 adStyle Native Ad의 형식을 지정합니다. NativeAdItem 의 adStyle 참고)
 adCount 조회할 광고 건수를 지정합니다. 실제 전달되는 광고 건수는 이보다 적을 수 있습니다.

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() 를 통하여 실제 로딩된 광고수를 반환합니다.
Comments