我最近将我的项目从AdMob SDK迁移到了Google服务广告,但是我对Google服务广告遇到了一个小问题.
我在活动中有一个横幅广告视图,我会动态调整布局中的按钮,具体取决于广告是否已加载.我使用AdMob SDK时工作正常,但现在使用Google服务广告时,在加载广告之前,横幅始终保留为空白.如果广告无法加载(比如没有网络),那么空白视图就在那里,这相当丑陋!这也是我想动态调整布局的原因…
我改变代码时错过了什么?谢谢你的帮助!
Java的:
import com.google.android.gms.ads.*; ... public class MyActivity extends Activity { ... @Override public void onCreate(Bundle savedInstanceState) { ... AdView adView = (AdView)findViewById(R.id.ad); AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); } }
布局XML:
... <com.google.android.gms.ads.AdView android:id="@+id/ad" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" ads:adUnitId="AD_PUB_ID" ads:adSize="BANNER"/> </RelativeLayout>
解决方法
您可以添加AdListener,并仅在收到广告时使广告可见.
代码如下所示:
final AdView ad = new AdView(context); ad.setAdUnitId(publisherId); ad.setAdSize(AdSize.SMART_BANNER); final AdListener listener = new AdListener() { @Override public void onAdLoaded() { ad.setVisibility(View.VISIBLE); super.onAdLoaded(); } }; ad.setAdListener(listener); ad.setVisibility(View.GONE); adParent.addView(ad); ad.loadAd(new AdRequest.Builder().build());
由于存在问题,AdMob广告会在仍然加载时销毁ANR.在调用pause()或destroy()之前,我通常还会检查广告的可见性.