博客转移到: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)
}
}
}
})