webview加載html5網頁,有些網頁功能不能實現的問題

前一段時間在做項目的時候遇到一個問題:webview加載本地的html網頁,網頁中有個按鈕,點擊按鈕之後,會從屏幕右側以動畫的方式進入一個div模塊,但是我的webview加載這個網頁之後,直接就把這個右側的div模塊覆蓋在主頁上,而且這個頁面也不能點擊了。

              找了好多資料,沒有結果,我就想着試着用第三方的webview的控件來試試,但是偶然的機會,我把webview的佈局文件中的android:layerType="software"這句刪了以後,就奇蹟般的好使了,後來我查了查這個屬性是什麼意思。

LAYER_TYPE_SOFTWARE
無論硬件加速是否打開,都會有一張Bitmap(software layer),並在上面對WebView進行軟渲染。
好處:
在進行動畫,使用software可以只畫一次View樹,很省。
什麼時候不要用:
View樹經常更新時不要用。尤其是在硬件加速打開時,每次更新消耗的時間更多。因爲渲染完這張Bitmap後還需要再把這張Bitmap渲染 到hardware layer上面去。


LAYER_TYPE_HARDWARE
硬件加速關閉時,作用同software。
硬件加速打開時會在FBO(Framebuffer Object)上面做渲染,在進行動畫時,View樹也只需要畫一次。


兩者區別:
1、一個是渲染到Bitmap,一個是渲染到FB上。
2、hardware可能會有一些操作不支持。
兩者相同:
都是開了一個buffer,把View畫到這個buffer上面去。


LAYER_TYPE_NONE
這個就比較簡單了,不爲這個View樹建立單獨的layer


PS:GLSurfaceView和WebView默認Layertype都是none。

希望對有相同問題的同學有幫助。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章