安卓端如何设置app open ad(应用开屏广告)的背景颜色
安卓App Open Ad开屏广告背景色正确设置方案
现有代码不生效原因
- 你当前对Activity的DecorView设置背景的操作仅作用于Activity自身根布局,开屏广告SDK会在Window层新增独立的广告承载容器,默认自带白色背景,会完全覆盖你设置的Activity根布局背景
- 背景设置时机错误,需要等广告即将展示的回调触发后再修改最上层的广告容器背景,不能在调用
show()方法前直接修改
正确实现方式
方案1:通过广告展示回调动态修改容器背景
在FullScreenContentCallback的onAdShowedFullScreenContent回调中遍历DecorView的所有子View,给广告承载容器设置背景色,Java实现代码如下:
FullScreenContentCallback fullScreenContentCallback = new FullScreenContentCallback() { @Override public void onAdShowedFullScreenContent() { super.onAdShowedFullScreenContent(); ViewGroup decorView = (ViewGroup) currentActivity.getWindow().getDecorView(); for (int i = 0; i < decorView.getChildCount(); i++) { decorView.getChildAt(i).setBackgroundColor(Color.BLACK); } } @Override public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) { super.onAdFailedToShowFullScreenContent(adError); // 广告展示失败的自定义处理逻辑 } @Override public void onAdDismissedFullScreenContent() { super.onAdDismissedFullScreenContent(); // 广告关闭后的自定义处理逻辑 } }; // 调用顺序必须先设置回调,再执行show操作 appOpenAd.setFullScreenContentCallback(fullScreenContentCallback); appOpenAd.show(currentActivity);
Kotlin实现代码如下:
val fullScreenContentCallback = object : FullScreenContentCallback() { override fun onAdShowedFullScreenContent() { super.onAdShowedFullScreenContent() val decorView = currentActivity.window.decorView as ViewGroup for (i in 0 until decorView.childCount) { decorView.getChildAt(i).setBackgroundColor(Color.BLACK) } } override fun onAdFailedToShowFullScreenContent(adError: AdError) { super.onAdFailedToShowFullScreenContent(adError) // 广告展示失败的自定义处理逻辑 } override fun onAdDismissedFullScreenContent() { super.onAdDismissedFullScreenContent() // 广告关闭后的自定义处理逻辑 } } appOpenAd.fullScreenContentCallback = fullScreenContentCallback appOpenAd.show(currentActivity)
方案2:修改开屏广告Activity主题配置(避免加载阶段白屏)
如果需要避免广告加载过程中出现短暂白屏,可以直接给承载开屏广告的Activity配置黑色背景的主题,在res/values/styles.xml中新增主题:
<style name="AppOpenAdTheme" parent="你的应用默认主题"> <item name="android:windowBackground">@android:color/black</item> <item name="android:statusBarColor">@android:color/black</item> <item name="android:navigationBarColor">@android:color/black</item> </style>
之后在AndroidManifest.xml中给对应Activity应用该主题即可。
内容的提问来源于stack exchange,提问作者Shahzaib
相关产品推荐
相关产品推荐

