内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我正在尝试为我的画布使用Android的硬件加速。我曾经有一个SurfaceView
我曾经做过lockCanvas()
的画布,后来我画了一张画布,但TextureView
由于无法SurfaceView
使用硬件加速,我改变了画布。我目前正试图让这个画布使用硬件加速:
Canvas canvas = this.lockCanvas();
System.out.println(this.isHardwareAccelerated() + ", " + canvas.isHardwareAccelerated());
=
有谁知道为什么canvas
不是硬件加速,以及如何做到这一点?
基本上,如果你希望你的TextureView
硬件加速,你必须确保在你的TextureView的上下文中的某个级别启用硬件加速,即以下之一:
<application android:hardwareAccelerated="true" ...>
<activity android:hardwareAccelerated="true" />
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
TextureView
仅在应用程序硬件加速时才有效,但从中Canvas
返回的lockCanvas()
内容目前从未硬件加速。这意味着你将在里面画TextureView
的Canvas
软件,但TextureView
本身会使用GPU绘制。目前,获得硬件加速Canvas的唯一方法是使用onDraw(Canvas)
View 的方法。