webview加载html5网页,有些网页功能不能实现的问题

来源:互联网 发布:绝地求生大逃杀 知乎 编辑:程序博客网 时间:2024/05/14 15:01

前一段时间在做项目的时候遇到一个问题: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。

希望对有相同问题的同学有帮助。。。

1 0
原创粉丝点击