Webview导致页面各种元素背景图片变黑

Webview causing blackening of background images of various elements on page

横幅广告直到今天都运行良好。我注意到每次在横幅广告中播放动画时都会出现闪烁。

这会影响 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 代码而自动发生的,因为它运行了很多天。 如何隔离应用程序,免受这些影响?

虽然视频中影响很小,我的其他页面影响很大


视频闪烁


编辑:

事实证明这是我的 mobile/manufacturer 特有的问题,因为 WebView 在页面上加载。 由于广告使用 webview,问题的原因似乎在于广告注入代码

型号:荣耀华为-9N,
LLD-AL20,
EMUI 9.1.0,
Android 版本 9

规格:

webview 的内容必须完成加载才能开始出现此问题。有些观点相对不受影响。对于页面的每次加载,页面的那些相同元素都会受到影响,即固定复制意味着页面上的 50 个元素,每次固定的 20 个元素受到影响。

我想我必须定位和膨胀 WebView 是一种不干扰其余元素的方式。

Webview 或广告是关闭 Fragment 的 Root ConstrainLayout 之前的最后一个元素。

有没有人找到解决此类问题的方法?

解决方法:

android:layerType="software"

android:layerType="software"

只需将其添加到 <com.google.android.gms.ads.AdView/> 即可修复加载横幅广告时背景图片变黑的问题