在 Android 中保存 canvas 并非每次都有效

Saving a canvas in Android does not work every time

我有这个代码:

public void saveimage() {
    Bitmap bitmap = Bitmap.createBitmap(colorGFX.getWidth(),
            colorGFX.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawColor(Color.WHITE);
    canvas = colorGFX.canvas;
    canvas.setBitmap(bitmap);
    saveBitmap(bitmap);
}

colorGFX 对象扩展了 SurfaceView。

saveBitmap 实际上是将图像写入文件。

问题是大多数时候保存的是白色图像,其他时候保存的是正确的图像。

我是不是漏掉了什么,或者为什么图像只保存了 1/5 的次数?

试试这个:

public void saveimage() {
    Bitmap bitmap = Bitmap.createBitmap(colorGFX.getWidth(),
            colorGFX.getHeight(), Bitmap.Config.ARGB_8888);
    colorGFX.draw(new Canvas(bitmap))
    saveBitmap(bitmap);
}

这对我有用:

Bitmap bitmap = Bitmap.createBitmap(colorGFX.getWidth(),
            colorGFX.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.WHITE);
canvas.drawBitmap(colorGFX.bitmap, 0f, 0f, null);
canvas.drawBitmap(colorGFX.pictureBitmap, 0f, 0f, null);
saveBitmap(bitmap);