android - Webview导致页面上各种元素的背景图像变黑
问题描述
直到今天,横幅广告都运行良好。我注意到每次动画在横幅广告中发生时都会发生闪烁。
这会影响 Fragment/Activity 中所有元素的背景区域,只要 AdMob 片段被导入和加载
class AdBFiller : Fragment() {
private lateinit var mAdView: AdView
private val mAppUnitId: String = "ad-code"
var fragContext: Context? = null
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val adFrag = inflater.inflate(R.layout.banner_filler, container, false)
fragContext = context
initializeBannerAd()
viewAppender(fragContext!!, adFrag)
loadBannerAd()
return adFrag
}
private fun initializeBannerAd() {
MobileAds.initialize(fragContext!!)
}
private fun loadBannerAd() {
val adRequest = AdRequest.Builder().build()
mAdView.loadAd(adRequest)
}
fun viewAppender(contxt: Context, adFrag: View) {
mAdView = AdView(contxt)
mAdView.setAdSize(AdSize.BANNER) // also same issue with SMART_BANNER
mAdView.setAdUnitId(mAppUnitId)
(adFrag as FrameLayout).addView(mAdView)
}
override fun onDestroyView() {
mAdView.destroy()
super.onDestroyView()
}
override fun onDestroy() {
mAdView.destroy()
super.onDestroy()
}
override fun onResume() {
super.onResume()
mAdView.resume()
}
override fun onPause() {
super.onPause()
mAdView.pause()
}
}
布局(banner_filler)如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".activities.AdBFiller"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
调用代替使用是
private fun inflateAds() {
supportFragmentManager
.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.add(R.id.adStub, AdBFiller())
.commit()
}
adStub 是一个 FrameLayout
我猜这是因为 AdMob 代码而自动发生的,因为它运行了很多天。如何隔离应用程序,不受这些影响?
虽然视频中影响不大,但我的其他页面受到很大影响
编辑:
原来这是我的手机/制造商特有的问题,并且由于页面上加载了 WebView。由于广告使用 webview,因此问题的原因出现在广告注入代码中
型号:荣耀华为-9N,
LLD-AL20,
EMUI 9.1.0,
Android版本9
规格:
webview 的内容必须完成加载才能启动此问题。有些观点相对不受影响。对于页面的每次加载,页面的那些相同元素都会受到影响,即固定再现意味着页面上的 50 个元素中,每次固定的 20 个元素都会受到影响。
我想我必须定位和膨胀 WebView 是一种不会干扰其他元素的方式。
Webview 或广告是片段的根约束布局关闭之前的最后一个元素。
有没有人找到解决此类问题的方法?
解决方案
解决了:
android:layerType="software"
推荐阅读
- javascript - 消息和别名
- node.js - blob.doesBlobExist 不返回值
- css - 在 flex 列中放置传单地图并使其填充整个容器
- angular - Angular:单击时更改布尔值
- c++ - Android反编译的方法名称在本机库中不匹配
- python - 模拟的 lambda 函数在 python 容器中不起作用
- reactjs - 反应本机选择器选择在操作表中不起作用
- css - Css --webkit-image-set() 语法不适用于 Chrome
- android - LiveData 和 room 使用继承
- node.js - DynamoDB 连接多个表