使用硬件加速的注意事项

为提高app的整体性能,在manifest文件中配置的时候,有可能会启动硬件加速,如下

android:hardwareAccelerated="true"

 

配置后,发现设备在4.0.4与4.0.3这样的版本上使用图片剪裁功能的时候会crash,捕获到的异常信息如下

java.lang.UnsupportedOperationException at android.view.GLES20Canvas.clipPath(GLES20Canvas.java:429)

 

查询代码发现,在图片剪裁的时候有使用到Canvas.clipPath(path, Region.Op.DIFFERENCE);这个函数

作为Canvas的一个实现类GLES20Canvas,在使用硬件加速的时候会被使用到。

查询GLES20Canvas的源代码,发现在4.0.4与4.0.3这两个版本中,clipPath的实现均为如下代码

public boolean clipPath(Path path, Region.Op op) {
         throw new UnsupportedOperationException();
 }

 直到4.1.1这个版本,sdk中的才进行了具体的实现

@Override
public boolean clipPath(Path path, Region.Op op) {
         // TODO: Implement
         path.computeBounds(mPathBounds, true);
        return nClipRect(mRenderer, mPathBounds.left, mPathBounds.top,
                mPathBounds.right, mPathBounds.bottom, op.nativeInt);
     }

 也就是说,在使用Canvas.clipPath的时候必须要特别注意如果app要使用硬件加速,应该把涉及clipPath的Activity排除在外,配置方法是:

在manifest中activity的配置处配置android:hardwareAccelerated ="false"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值