admin管理员组文章数量:1516870
1.Android3.0(API level 11)开始,2D渲染管道支持硬件加速,也就是说绘制操作可以使用GPU绘制在View的canvas上。使用硬件加速需要更多的资源,所以app会消耗更多内存。
2.硬件加速在Target API >= 14时是默认开启的。
3.硬件加速还不支持所有的2D绘图命令,开启后可能会影响自定义View和绘图操作。异常通常是不可见元素、运行异常、或者错误的像素点。
4.如果只使用系统的View和Drawable,则没有任何副作用。
5.如果app里有自定义的绘图操作,需要在开启硬件加速的设备上测试来发现问题。
6.可以在4个级别上控制硬件加速
Application
<applicationandroid:hardwareAccelerated="true"...>Activity
<applicationandroid:hardwareAccelerated="true"><activity... /><activityandroid:hardwareAccelerated="false" /></application>Window
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);View
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);Window和View级别只能关闭硬件加速,而不能控制开启
7.有两种方式来检测应用是否在使用硬件加速
View.isHardwareAccelerated() returns trueifthe View is attached to a hardware accelerated window.
Canvas.isHardwareAccelerated() returns trueifthe Canvas is hardware accelerated推荐使用Canvas.isHardwareAccelerated()来检测,因为View关联到一个硬件加速的window上,任然可以使用非硬件加速的canvas绘制。
8.使用硬件加速时canvas的绘制命令在不同版本上支持情况不一样,具体见
9.View layers
所有的Android版本View都可以在非屏幕内存(off-screen buffers)上渲染,使用view的drawing cache或者Canvas.saveLayer().非屏幕内存或者layers有许多用处,在对复杂对View做动画或者做一些叠加复合效果时可以得到更好的性能。
在Android3.0之后可以使用View.setLayerType()来控制如何使用layers。
- LAYER_TYPE_NONE 默认行为,正常渲染,不会在off-screen buffer上备份
- LAYER_TYPE_HARDWARE 如果应用开启了硬件加速view渲染在硬件上,否则与LAYER_TYPE_SOFTWARE行为一样
- LAYER_TYPE_SOFTWARE 用软件渲染在一个bitmap上
使用硬件加速有更高的效率,如果产生兼容性问题,可以用setLayerType改变渲染方式。
10.使用硬件加速在对一些view的属性改变上有更高的效率,因为不需要view的invalidate和redrawn。属性如下
- alpha
- x, y, translationX, translationY
- scaleX, scaleY
- rotation, rotationX, rotationY
- pivotX, pivotY
对这些熟悉改变时最好使用硬件加速
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
ObjectAnimator.ofFloat(view, "rotationY", 180).start();或者
View.setLayerType(View.LAYER_TYPE_HARDWARE, null);
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "rotationY", 180);
animator.addListener(new AnimatorListenerAdapter() {
@OverridepublicvoidonAnimationEnd(Animator animation) {
view.setLayerType(View.LAYER_TYPE_NONE, null);
}
});
animator.start();版权声明:本文标题:如何在Android上激活硬件加速功能?提升游戏体验的小技巧 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1770578049a3256196.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论