我正在开发ICS并试图理解为什么 使用a时,Canvas.isHardwareAccelerated()将始终返回FALSE SurfaceView中的画布。
我尝试过这样一个非常基本的例子: http://android-coding.blogspot.com/2011/05/drawing-on-surfaceview.html 或者这个:http://jmsliu.com/199/android-canvas-example.html
我甚至将它们修改为在绘制循环中没有任何画布调用 以为我可能会遇到一些不受支持的硬件加速操作 对于某些绘图调用。 我在“不支持的绘图操作”下检查了此列表 developer.android.com/guide/topics/graphics/hardware-accel.html 但是我没有这样做。
我在Developer Options中使用Force GPU渲染标志 和...一起 在清单中,我也指定minSDK / targetSDK> = 14。
View.isHardwareAccelerated将返回TRUE,而 Canvas.isHardwareAccelerated将始终返回FALSE。
我已经看到Canvas.java的硬编码返回false为isHardwareAccelerated(),而HardwareCanvas.java返回true。我想由于某些原因我没有获得硬件路径,为什么?
SurfaceView中的Canvas可以加速HW加速吗?
由于
答案 0 :(得分:14)
SurfaceView.lockCanvas()
返回的画布目前无法进行硬件加速。
答案 1 :(得分:4)
似乎unlockHardwareCanvas
android.view.Surface
以下是示例:
http://androidxref.com/5.1.0_r1/xref/frameworks/base/tests/HwAccelerationTest/src/com/android/test/hwui/HardwareCanvasSurfaceViewActivity.java
您可以在生产环境中使用relfecation。
答案 2 :(得分:1)
你有没有在你的Android清单中说明你的应用想要使用hw加速?
这就像是
<application android:hardwareAccelerated="true" ...>
根据您的目的,仅激活活动或窗口的加速功能可能也很有用,有关详细信息,请参阅http://developer.android.com/guide/topics/graphics/hardware-accel.html。
鲁迪