1. 程式人生 > >Webview在RecyclerView中開啟硬體加速閃屏問題解決

Webview在RecyclerView中開啟硬體加速閃屏問題解決

在專案中遇到一個問題:把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)
                }
            }
        }
    })