根据我在SO上看到的内容,我想要做的事情即使可能也很困难,但我希望有人至少能建议一个更直接的方法来完成我想要的事情。以下代码在自定义SurfaceView中绘制了项目,全部都在画布上。我想要做的是,在显示画布的同时,将其上的所有内容保存到文件中,以供几个活动使用,但我似乎无法找到如何实现。
public void draw()
{
if(holder.getSurface().isValid()) {
Canvas canvas = holder.lockCanvas();
canvas.drawColor(0, Mode.CLEAR);
drawSurface(canvas);
canvas.translate(-56, 30);
int i = 0;
for(Picture a: accessories) {
canvas.translate(0, a_offset[i]);
if(a!=null) {
canvas.drawPicture(a);
}
i++;
}
holder.unlockCanvasAndPost(canvas);
}
}
private void drawSurface(Canvas canvas) {
Rect rect = new Rect();
rect.set(37*screenWidth/480, 146*screenHeight/800, (37 + 300)*screenWidth/480, (146 + 300)*screenHeight/800);
canvas.drawBitmap(avatar, null, rect, null);
}
我目前用来保存文件的方法本质上是使用上面的方法的副本,只不过使用了从位图创建的Canvas(canvas = new Canvas(bitmap)
而不是 holder.lockCanvas
),并且使用不同的数字来获取正确的位置和大小。 我可以将这些方法组合起来,并至少给它们一些参数以避免使用不同的方法,但如果可能的话,我想只使用同一个画布绘制图像并保存文件。