在启用硬件加速的动画视图时,LAYER_TYPE_NONE和LAYER_TYPE_HARDWARE之间有什么区别

时间:2017-06-09 06:41:13

标签: android android-animation android-canvas

根据Android develop guide,将使用LAYER_TYPE_NONE为硬件加速视图创建显示列表,而使用LAYER_TYPE_HARDWARE为硬件加速视图创建hardware layer。在任一种方法中应用旋转动画时都不需要重绘视图。那么,在启用硬件加速的动画视图时,LAYER_TYPE_NONE和LAYER_TYPE_HARDWARE的实际差异是什么?

1 个答案:

答案 0 :(得分:1)

如果要应用旋转动画,首先会重绘视图。

硬件层(LAYER_TYPE_HARDWARE)缓存在GPU上,这使得动画期间的某些操作更快。可以使用图层快速渲染简单的变换(平移,旋转,缩放和alpha)。

LAYER_TYPE_HARDWARE 使用占用GPU内存的图层,显然您不希望任何内存泄漏。因此,您应该只在必要时使用硬件层,例如在动画期间。

使用 LAYER_TYPE_NONE ,您明确希望避免在启用硬件加速的情况下进行硬件层渲染。

供参考,请阅读http://blog.danlew.net/2015/10/20/using-hardware-layers-to-improve-animation-performance/