3

我想在 aPicture上画一个Canvasby

mCanvas.drawpicture(mPicture, mRect)

使用目标 API 7 <uses-sdk android:minSdkVersion="7"/>,它在 API<14 的设备中完美运行,但在具有冰淇淋三明治的设备中,它不起作用。显然这是因为硬件加速不支持 canvas.drawPicture:不支持的绘图操作 我试图通过禁用清单中的硬件加速来解决这个问题:

<application android:hardwareAccelerated="false" ...>

但仍然无法正常工作。

4

2 回答 2

6

我有同样的问题,并通过仅在将绘制的视图上以编程方式关闭硬件加速来解决Picture

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);
    }
}
于 2012-12-27T11:58:27.703 回答
5

尝试替换drawPicturedrawBitmap. 语法几乎相同,您只需要传递一个源矩形(只需使其成为图像的大小)和一个绘画(如果您不编辑图像可以为空)。

于 2012-04-30T13:56:09.857 回答