(EN) Android Native, CloseAd - adxcorp/ADXLibrary_Integration GitHub Wiki

Native Ad Integration

For Native Ad, build your own layout and implement it to your needs.

1) Native Ad Layout

Native Ad requires you to provide Icon Image, Title Text, CTA Button, Sponsored(AD) Tag, and Privacy Icon. Also, there must be no layout that covers over ad content area. Finally, you are not allowed to change any text, image or touch actions related to the ad content.

You also can refer to below project for implementing native ad layout. (layout_media_native_ad.xml, layout_native_ad.xml) https://github.com/adxcorp/ADXLibrary_Sample_Android

2) Using a single view

MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

          NativeAdFactory.init(this);

          // for Native Ad
          NativeAdFactory.setViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ViewBinder.Builder(R.layout.layout_native_ad)
                  .mainImageId(R.id.mainImageId)
                  .iconImageId(R.id.iconImageId)
                  .titleId(R.id.titleId)
                  .callToActionId(R.id.callToActionId)
                  .privacyInformationIconImageId(R.id.privacyInformationIconImageId)
                  .build());
          NativeAdFactory.setAdxViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ADXViewBinder.Builder(R.layout.layout_media_native_ad)
                .mediaViewContainerId(R.id.mediaContainerId)
                .adIconViewContainerId(R.id.adIconContainerId)
                .titleId(R.id.titleId)
                .adChoiceContainerId(R.id.adChoicesContainerId)
                .callToActionId(R.id.callToActionId)
                .build());
          NativeAdFactory.preloadAd(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}

Activity (or Fragment)

private View mAdView;
private NativeAd mNativeAd;
    
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_native_ad_factory);
    
    NativeAdFactory.addListener(mListener);
    NativeAdFactory.loadAd(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}
    
@Override
protected void onDestroy() {
    NativeAdFactory.removeListener(mListener);
    
    if(mNativeAd != null) {
        mNativeAd.destroy();
        mNativeAd = null;
    }
    
    super.onDestroy();
}
    
private NativeAdFactory.NativeAdListener mListener = new NativeAdFactory.NativeAdListener() {
    @Override
    public void onSuccess(String s, NativeAd nativeAd) {
        if(DefineAdUnitId.NATIVE_AD_UNIT_ID.equals(s)) {
            mNativeAd = nativeAd;
            mAdView = NativeAdFactory.getNativeAdView(NativeAdFactoryActivity.this, DefineAdUnitId.NATIVE_AD_UNIT_ID, mContentView, null);
            mContentView.addView(mAdView);
        }
    }
    
    @Override
    public void onFailure(String s) {
    }
}

3) Using RecyclerView

MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

          NativeAdFactory.init(this);

          // for Native Ad
          NativeAdFactory.setViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ViewBinder.Builder(R.layout.layout_native_ad)
                  .mainImageId(R.id.mainImageId)
                  .iconImageId(R.id.iconImageId)
                  .titleId(R.id.titleId)
                  .callToActionId(R.id.callToActionId)
                  .privacyInformationIconImageId(R.id.privacyInformationIconImageId)
                  .build());
          NativeAdFactory.setAdxViewBinder(DefineAdUnitId.NATIVE_AD_UNIT_ID, new ADXViewBinder.Builder(R.layout.layout_media_native_ad)
                .mediaViewContainerId(R.id.mediaContainerId)
                .adIconViewContainerId(R.id.adIconContainerId)
                .titleId(R.id.titleId)
                .adChoiceContainerId(R.id.adChoicesContainerId)
                .callToActionId(R.id.callToActionId)
                .build());
          NativeAdFactory.preloadAd(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}

Activity (or Fragment)

private MoPubRecyclerAdapter mRecyclerAdapter;
private RecyclerView mRecyclerView;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_native_ad_recyclerview);

    mRecyclerView = (RecyclerView) findViewById(R.id.native_recycler_view);

    final RecyclerView.Adapter originalAdapter = new DemoRecyclerAdapter();

    mRecyclerAdapter = NativeAdFactory.getMoPubRecyclerAdapter(this, originalAdapter, DefineAdUnitId.NATIVE_AD_UNIT_ID);

    mRecyclerView.setAdapter(mRecyclerAdapter);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mRecyclerAdapter.loadAds(DefineAdUnitId.NATIVE_AD_UNIT_ID);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mRecyclerAdapter.destroy();
}

Close Ad Integration

Please implement close ad via close ad's unit id

import com.adxcorp.nativead.CloseAdFactory;

public class AppWallActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_app_wall);
        ButterKnife.bind(this);


        CloseAdFactory.init(this, UNIT_ID, "Exit Message");
        CloseAdFactory.preloadAd();
    }

    @Override
    public void onBackPressed() {
        CloseAdFactory.showCloseAd(this, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Log.d("chiung.choi", "onClick positive button");

                finish();
            }
        }, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Log.d("chiung.choi", "onCancel");
            }
        });
    }

    @Override
    protected void onDestroy() {
        CloseAdFactory.destroy();

        super.onDestroy();
    }