Pau*_*ega 5 android android-manifest
可能是一些愚蠢的事情,但我试图在针对3.1的应用程序中启用硬件加速,根据本教程.
我在清单中添加了以下内容:
<uses-sdk
android:targetSdkVersion="12"
android:minSdkVersion="12" />
<application
...
android:hardwareAccelerated="true">
Run Code Online (Sandbox Code Playgroud)
当我附加View后检查硬件加速状态时(通过调用 isHardwareAccelerated()覆盖onAttachedToWindow())我返回true,所以看起来都很棒.问题是SurfaceView的Canvas没有被加速,因为canvas.isHardwareAccelerated()返回false.我正在办理surfaceCreated()登机手续,我也在那里实现,所以不知道Canvas正在失去这个设置.
有什么指针吗?
EDIT1:
在Google Developers小组中找到了这个和这个,但是如果我正在检查这个onAttachedToWindow(),我确实在查看View之后进行检查,对吧?这是在运行3.1 BTW的联想平板电脑上.
EDIT2:
我试过通过设置禁用加速
<application
...
android:hardwareAccelerated="false">
Run Code Online (Sandbox Code Playgroud)
我仍然看到View中的真实回归onAttachedToWindow(),所以有些东西不在这里.我没有明确地从代码中调用hw accel,可能是特定于设备的问题?
此外,我在创建SurfaceView时在LogCat中偶尔看到以下行:
surface (identity=524) is invalid, err=-19 (No such device)
Run Code Online (Sandbox Code Playgroud)
EDIT3:
只是在这里大声思考,但是有没有机会因为它是自己的线程,通过使用绘图循环的典型SurfaceView实现,如Lunar Lander,Canvas没有被加速?
这是预期的行为。SurfaceView 不是硬件加速的。(关联)
从Android 4.0开始有一个新的TextureView(这里是一个例子)。
另请参阅此 SO问题了解 4.0 之前的可用性。
更新:刚刚在 Android 4.0 的 Transformer 上进行了测试,TextureView Canvas 也没有硬件加速。:-/
更新Android 6.0:有一种新的硬件加速方法: https://developer.android.com/reference/android/view/Surface.html#lockHardwareCanvas()
| 归档时间: |
|
| 查看次数: |
3898 次 |
| 最近记录: |