#java #android #graphics #android-canvas #android-bitmap
#java #Android #графика #android-холст #android-растровое изображение
Вопрос:
Каждый раз, когда перерисовывается SurfaceView, объекты, которые были ранее нарисованы, стираются. Как мне сохранить их состояние, чтобы мой цикл добавлял новые объекты на экран, не стирая старые?
Ответ №1:
Рисуйте с помощью Bitmap
:
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);
Комментарии:
1. точно так же, только этот код будет выполняться не в onDraw(), а в методе run() потока.