admin管理员组文章数量:1516870
硬件加速的含义:
在 Canvas 上 使用 GPU ( 图形处理器)对 View 进行 绘制操作。 硬件加速主要应用于图像的绘制。
硬件加速的特点:
硬件加速能够带来性能的提升。硬件加速使得 View 绘制更加平滑,图形绘制速度加快;但是会多消耗一些内存,耗电量加大。
1 、由于硬件加速自身并非完美无缺,所以 Android 提供选项来打开或者关闭硬件加速,默认是关闭。
2 、硬件加速分为四个级别:在清单文件中进行配置
( 1 ) Application 级别控制硬件加速: <application android:hardwareAccelerated="true" ...>
在 Android4.0 以上(包含)默认就为 true ,即开启。如果整个应用都不想用硬件加速,则手动设定为 false 。
( 2 ) Activity 级别控制硬件加速: <activity android:hardwareAccelerated="false" ...> 设置为 false ,表示关闭硬件加速。
( 3 ) Window 级别控制硬件加速:
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
( 4 )可以通过代码在运行时控制单个 View 是否使用硬件加速:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
LAYER_TYPE_HARDWARE 即为使用硬件加速( GPU ), LAYER_TYPE_SOFTWARE 使用 CPU 进行绘制。
当前, Android 对硬件加速的支持并非完美,有些绘制操作在开启硬件加速的情况下不能正常工作,会出现各种问题。不过 Android 可以保证内置的组件和应用支持硬件加速(原生控件是可以开启硬件加速的)。因此,如果应用中只使用了标准 UI 组件,可以放心开启硬件加速。
开启硬件加速可能出现的异常现象:核心就是图像在 Canvas 上不能正常绘制。
1 ) UI 元素不显示,不更新,绘制错误,抛出异常(可能使用了不支持硬件加速的操作, 需要关闭硬件加速或者绕过该操作)
android 为什么要弄出这么多级别的控制,而不是默认就是全部硬件加速呢?原因是并非所有的 2D 绘图操作支持硬件加速,如果在程序中使用了自定义视图或者绘图调用,程序可能会工作不正常。如果程序中只是用了标准的视图和 Drawable ,这样就没有问题。
版权声明:本文标题:加速你的应用:深入探讨Android硬件加速技术 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1770576642a3256178.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论