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中开启硬件加速闪屏问题解决的主要内容,如果未能解决你的问题,请参考以下文章
recyclerview 中的 Webview 没有就地展开。 (底部没有缩小)
RecyclerView 自动滚动到 WebView/Fresco SimpleDraweeView 项