Android有对硬件进行加锁的API吗
发布网友
发布时间:2024-03-28 10:04
我来回答
共1个回答
热心网友
时间:2024-07-20 11:17
从Android3.0(API Level 11)开始,Android 2D渲染管道能够更好的支持硬件加速。硬件加速执行的所有的绘图操作都是使用GPU在View对象的画布上来进行的。因为启用硬件加速会增加资源的需求,因此这样的应用会占用更多的内存。
硬件加速在target api大于等于14的情况下,是默认开启的,但是我们也可以显示的开启硬件加速。如果应用程序只使用标准的View和Drawable,那么打开全局硬件加速不会导致任何不良的绘制影响。然而,由于硬件加速并不支持所有的2D图形绘制操作,因此对于那些使用定制的View和绘制调用来说,打开全局硬件加速,会造成影响。对于这个问题,通常是对那些不可见的元素进行了异常或错误的像素渲染。为了避免这种问题,Android提供了多个级别的硬件加速操作(开启或者关闭),具体可见控制硬件加速。
android提供了以下四个个级别来控制硬件加速:
ApplicationActivityWindowView
Application级别
在应用的Android清单文件中,把下列属性添加到元素中,能够开启整个应用程序的硬件加速:
?
1
</application>
Activity级别
如果应用程序不能正确的使用被打开的全局硬件加速,那么也可以在Activity级别上进行控制。在元素中使用android:hardwareAccelerated属性,能够启用或禁止Activity级别的硬件加速。以下示例启用全局的硬件加速,但却禁止了一个Activity的硬件加速:
?
1
2
3
4
</activity></activity></application>
Window级别
如果需要更精细的控制,就可以使用下列代码来针对给定的Window来启用硬件加速:
?
1
2
3
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
注意:当前情况,不能在Window级别禁止硬件加速。
View级别
在运行时,可以针对一个独立的View对象使用下列代码来禁止硬件加速:
?
1
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
注意:当前情况,不能在View级别开启硬件加速。View Layer除了禁止硬件加速以外,还有其他的功能,更多的相关信息请看本文的View layer。