Android TextureView硬件加速与lockCanvas()是怎样的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (244)

我正在尝试为我的画布使用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()内容目前从未硬件加速。这意味着你将在里面画TextureViewCanvas软件,但TextureView本身会使用GPU绘制。目前,获得硬件加速Canvas的唯一方法是使用onDraw(Canvas)View 的方法。

扫码关注云+社区

领取腾讯云代金券