Webview在RecyclerView中开启硬件加速闪屏问题解决

Posted xiaohuanqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Webview在RecyclerView中开启硬件加速闪屏问题解决相关的知识,希望对你有一定的参考价值。

博客转移到:http://www.wangchengmeng.club/

在项目中遇到一个问题:把Webview作为header加在Recyclerview中,开启硬件加速后,锤子手机闪屏严重,其他手机有闪屏,不算严重。但是关闭硬件加速网页会很卡,一直对于硬件加速闪屏问题不知怎么解决,尝试直接关闭Webview的硬件加速,但出现白屏现象,尝试了一下如果webview不加在Recyclerview中,不会出现闪屏,现就对于加在Recyclerview闪屏情况有个妙招解决,经过测试 效果还不错。

解决办法:
监听RecyclerView的滑动状态,在滑动的时候开启RecyclerVIew的硬件加速,此刻就不会闪屏,也看不到网页的闪屏现象,再停下来的时候(IDEA),再关闭RecyclerView的硬件加速,因为没有滑动 所以不会出现卡的现象,而且关闭了硬件加速,不会出现闪屏现象。

虽然不是一个很好的解决办法,但是终究解决了这个问题,目前可以满足需求。

代码:

    recyclerView.addOnScrollListener(object: RecyclerView.OnScrollListener() 
        override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) 
            super.onScrollStateChanged(recyclerView, newState)
            if (newState == RecyclerView.SCROLL_STATE_IDLE) 
                if (recyclerView?.layerType != View.LAYER_TYPE_SOFTWARE) 
                    recyclerView?.setLayerType(View.LAYER_TYPE_SOFTWARE, null)

                
             else 
                if (recyclerView?.layerType != View.LAYER_TYPE_HARDWARE) 
                    recyclerView?.setLayerType(View.LAYER_TYPE_HARDWARE, null)
                
            
        
    )

以上是关于Webview在RecyclerView中开启硬件加速闪屏问题解决的主要内容,如果未能解决你的问题,请参考以下文章

android webview 怎么开启或关闭硬件加速

RecyclerView中的WebView,滚动问题

recyclerview 中的 Webview 没有就地展开。 (底部没有缩小)

RecyclerView 自动滚动到 WebView/Fresco SimpleDraweeView 项

Recyclerview 中包含 webView 和 EditText 导致 编辑框无法输入的问题

又来一个库,WebView,RecyclerView 多布局连贯滑动