Webview在RecyclerView中開啟硬體加速閃屏問題解決
阿新 • • 發佈:2019-02-08
在專案中遇到一個問題:把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) } } } })