每次重绘 SurfaceView 时,之前绘制的内容都会被删除。如何保存它们的状态,以便我的循环将新对象添加到屏幕上而不删除旧对象?
最佳答案
使用位图
绘制:
Bitmap mDrawBitmap;
Canvas mBitmapCanvas;
Paint mDrawPaint = new Paint();
@Override
public void onDraw(Canvas canvas) {
if (mDrawBitmap == null) {
mDrawBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
mBitmapCanvas = new Canvas(mDrawBitmap);
}
// draw on the btimapCanvas
//... and more
mBitmapCanvas.drawWhatever(...);
// after drawing with the bitmapcanvas,
//all drawn information is stored in the Bitmap
// draw everything to the screen
canvas.drawBitmap(mDrawBitmap, 0, 0, mDrawPaint);
}
这样,“mDrawBitmap”将始终包含当前绘制的状态。如果需要,可以通过调用mBitmapCanvas.drawColor(Color.WHITE);
关于java - 如何在重绘时保存先前绘制到 Canvas 上的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376122/