android webview 硬件加速 view渲染问题

告诉我我并不孤单,在项目里面遇到一个没有道理的问题,在webview的滚动的时候,竟然出现了顶部的view的渲染的问题,哈。。。。。无赖脸~

===============================对,我是分割线=====================================

嗯,开始一看这问题,得,要解决吧,不能说不解决吧,怎么问百度呢,怎么问google呢,好纠结啊,android webview view变色?懵逼脸。。。

废话end。。。。。

理解View的绘制模型:

       1.没有硬件加速:invalidate the view hierarchy ------> draw the view hierarchy

      2.有硬件加速:invalidate the view hierarchy ------> record and update the display list ------> draw the display list

嗯,没看出什么来,对了,没啥太多的提示。

咳咳,事实是这个样子的,google官方好像早就知道了,留了个大大的坑。


  开启硬件加速之后的异常反应:

       1.某些UI元素没有显示:可能是没有调用invalidate

      2.某些UI元素没有更新:可能是没有调用invalidate

      3.绘制不正确:可能使用了不支持硬件加速的操作, 需要关闭硬件加速或者绕过该操作

      4.抛出异常:可能使用了不支持硬件加速的操作, 需要关闭硬件加速或者绕过该操作

哈,引子结束,在我正在优化的项目中,因为用了h5的本地化页面,页面元素比较多,加重了手机的负担,在进行页面的渲染的时候,又在aplication级的地方加入了硬件加速的一个设置,作死。

故而,解决办法,关闭掉硬件加速:

方法:

Application级别:<applicationandroid:hardwareAccelerated="true" ...>

      Activity级别:<activity android:hardwareAccelerated="false" ...>

      Window级别:

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

      注意:目前为止,Android还不支持在Window级别关闭硬件加速。

      View级别:

myView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值