我想画一个Picture
在 Canvas
上通过
mCanvas.drawpicture(mPicture, mRect)
使用目标 API 7 <uses-sdk android:minSdkVersion="7"/>
,它在 API<14 的设备中完美运行,但在带有 Ice Cream Sandwich 的设备中,它不起作用。显然这是因为硬件加速不支持 canvas.drawPicture:Unsupported Drawing Operations
我试图通过在 list 中禁用硬件加速来解决这个问题:
<application android:hardwareAccelerated="false" ...>
但还是不行。
最佳答案
我遇到了同样的问题,通过仅在将绘制 Picture
的 View 上以编程方式关闭硬件加速来解决
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
但是setLayerType仅自 API 11 起受支持。因此请改用此方法:
public static void setHardwareAccelerated(View view, boolean enabled){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
if(enabled)
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
else view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}
关于Android Canvas.drawPicture 不适用于带有 Ice Cream Sandwich 的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384613/