我在我的 Android 应用程序中显示 AdMob 的 横幅。我希望当用户点击横幅时它就消失了。我已经尝试过代码
AdView.setOnClickListener
但它不起作用......
编辑:这是代码
private void visual_banner(){
//##### Pubblicità #####
//Create the adView
adView = new AdView(this, AdSize.BANNER, "a14e5bed604ebf8");
// Lookup your LinearLayout assuming it’s been given
// the attribute android:id="@+id/mainLayout"
LinearLayout layout = (LinearLayout)findViewById(R.id.layout_ads_streaming);
// Add the adView to it
layout.addView(adView);
// Initiate a generic request to load it with an ad
adView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
adView.destroy();
img.setVisibility(View.VISIBLE);
}
});
adView.loadAd(new AdRequest());
//### FINE PUBBLICITA'
}
尝试使用 AdMob 的 adListener 来监听事件。
public interface AdListener {
public void onReceiveAd(Ad ad);
public void onFailedToReceiveAd(Ad ad, AdRequest.ErrorCode error);
public void onPresentScreen(Ad ad);
public void onDismissScreen(Ad ad);
public void onLeaveApplication(Ad ad);
}
让你的类实现监听器,然后将监听器添加到 adView 中:
adView.setAdListener(this);
实现 onDismissScreen 事件,该事件在您的应用程序在处理广告点击后恢复控制时发生。此时,您可以删除 AdView,并且您将获得点击的功劳。
@Override
public void onDismissScreen(Ad ad) {
if (adView != null) {
adView.destroy();
}
}
我可以帮助您添加 AdWhirl。
我已经看过来源并做了下一步:
public class AdWhirlLayoutCustom extends AdWhirlLayout {
public AdWhirlLayoutCustom(Activity context, String keyAdWhirl) {
super(context, keyAdWhirl);
}
public AdWhirlLayoutCustom(Context context, AttributeSet attrs) {
super(context, attrs);
}
// We intercept clicks
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
boolean result = super.onInterceptTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Click!
break;
}
return result;
}
}
您可以实现AdListener接口的onAdLeftApplication()。当广告离开应用程序时(例如,转到浏览器),会调用此方法。
adView.setAdListener(new AdListener() {
@Override
public void onAdLeftApplication ()
{
//Do your stuff
}
}
});
欲了解更多信息,请查看以下链接 https://developers.google.com/android/reference/com/google/android/gms/ads/AdListener.html#onAdLeftApplication()
我同意以上所有答案,但我只是扩展答案。我已经做了如下
在
AdView
中加载广告,如下
AdView adView = (AdView)findViewById(R.id.adView);
adView.loadAd(new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("your device id")
.build());
现在接下来设置广告监听器
adView
。采用一个全局布尔变量,如 isClicked
,这样每当用户点击广告并打开该页面时,onAdLeftApplication()
方法就会被调用,因此使该变量为 true。当用户点击广告然后重定向到该广告页面时,当前应用程序将进入 onPause 状态。
adView.setAdListener(adListener);
com.google.android.gms.ads.AdListener adListener = new AdListener() {
@Override
public void onAdClosed() {
super.onAdClosed();
}
@Override
public void onAdFailedToLoad(int i) {
super.onAdFailedToLoad(i);
}
@Override
public void onAdLeftApplication() {
super.onAdLeftApplication();
isClicked = true;
}
@Override
public void onAdOpened() {
super.onAdOpened();
}
@Override
public void onAdLoaded() {
super.onAdLoaded();
}
@Override
public void onAdClicked() {
super.onAdClicked();
}
@Override
public void onAdImpression() {
super.onAdImpression();
}
};
现在,每当用户返回当前应用程序活动时,都会调用
onResume()
方法,因此实现您的其他内容将在那里或如下所示
@Override
protected void onResume() {
super.onResume();
if (isClicked){
isClicked = false;
// do your other stuff whatever you want;
}
}
使用
AdListener
类,并实现 onAdClicked
。该课程记录在here。
AdView adView = view.findViewById(R.id.adView);
adView.setAdListener(new AdListener() {
@Override
public void onAdClicked() {
super.onAdClicked();
// Code here
}
});