import
android.os.Bundle;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.widget.Button;
import
android.widget.LinearLayout;
import
android.widget.TextView;
import
android.widget.Toast;
import
androidx.appcompat.app.AppCompatActivity;
import
com.facebook.ads.Ad;
import
com.facebook.ads.AdError;
import
com.facebook.ads.AdOptionsView;
import
com.facebook.ads.AudienceNetworkAds;
import
com.facebook.ads.MediaView;
import
com.facebook.ads.NativeAd;
import
com.facebook.ads.NativeAdLayout;
import
com.facebook.ads.NativeAdListener;
import
java.util.ArrayList;
import
java.util.List;
public
class
MainActivity
extends
AppCompatActivity {
private
NativeAdLayout nativeAdLayout;
private
LinearLayout adView;
private
NativeAd nativeAd;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AudienceNetworkAds.initialize(
this
);
findViewById(R.id.showNativeAdBtn).setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View view) {
loadNativeAd();
}
});
}
private
void
loadNativeAd() {
nativeAd =
new
NativeAd(
this
,
"YOUR_PLACEMENT_ID"
);
NativeAdListener nativeAdListener =
new
NativeAdListener() {
@Override
public
void
onMediaDownloaded(Ad ad) {
Toast.makeText(MainActivity.
this
,
"onMediaDownloaded"
, Toast.LENGTH_SHORT).show();
}
@Override
public
void
onError(Ad ad, AdError adError) {
Toast.makeText(MainActivity.
this
,
"onError"
, Toast.LENGTH_SHORT).show();
}
@Override
public
void
onAdLoaded(Ad ad) {
Toast.makeText(MainActivity.
this
,
"onAdLoaded"
, Toast.LENGTH_SHORT).show();
if
(nativeAd ==
null
|| nativeAd != ad) {
return
;
}
inflateAd(nativeAd);
}
@Override
public
void
onAdClicked(Ad ad) {
Toast.makeText(MainActivity.
this
,
"onAdClicked"
, Toast.LENGTH_SHORT).show();
}
@Override
public
void
onLoggingImpression(Ad ad) {
Toast.makeText(MainActivity.
this
,
"onLoggingImpression"
, Toast.LENGTH_SHORT).show();
}
};
nativeAd.loadAd(
nativeAd.buildLoadAdConfig()
.withAdListener(nativeAdListener)
.build());
}
void
inflateAd(NativeAd nativeAd) {
nativeAd.unregisterView();
nativeAdLayout = findViewById(R.id.native_ad_container);
LayoutInflater inflater = LayoutInflater.from(MainActivity.
this
);
adView = (LinearLayout) inflater.inflate(R.layout.fan_native_ad_layout, nativeAdLayout,
false
);
nativeAdLayout.addView(adView);
LinearLayout adChoicesContainer = findViewById(R.id.ad_choices_container);
AdOptionsView adOptionsView =
new
AdOptionsView(MainActivity.
this
, nativeAd, nativeAdLayout);
adChoicesContainer.removeAllViews();
adChoicesContainer.addView(adOptionsView,
0
);
MediaView nativeAdIcon = adView.findViewById(R.id.native_ad_icon);
TextView nativeAdTitle = adView.findViewById(R.id.native_ad_title);
MediaView nativeAdMedia = adView.findViewById(R.id.native_ad_media);
TextView nativeAdSocialContext = adView.findViewById(R.id.native_ad_social_context);
TextView nativeAdBody = adView.findViewById(R.id.native_ad_body);
TextView sponsoredLabel = adView.findViewById(R.id.native_ad_sponsored_label);
Button nativeAdCallToAction = adView.findViewById(R.id.native_ad_call_to_action);
nativeAdTitle.setText(nativeAd.getAdvertiserName());
nativeAdBody.setText(nativeAd.getAdBodyText());
nativeAdSocialContext.setText(nativeAd.getAdSocialContext());
nativeAdCallToAction.setVisibility(nativeAd.hasCallToAction() ? View.VISIBLE : View.INVISIBLE);
nativeAdCallToAction.setText(nativeAd.getAdCallToAction());
sponsoredLabel.setText(nativeAd.getSponsoredTranslation());
List<View> clickableViews =
new
ArrayList<>();
clickableViews.add(nativeAdTitle);
clickableViews.add(nativeAdCallToAction);
nativeAd.registerViewForInteraction(adView, nativeAdMedia, nativeAdIcon, clickableViews);
}
}