Небольшое изменение.
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mBitmap = Bitmap.createScaledBitmap(mBackground, w, h, true);
mCanvas = new Canvas(mBitmap);
}
, где mBackground
- это Bitmap
, который вы инициализируете в конструкторе MyView
.
Я почти уверен, что так и должно быть, если у вас возникли проблемы, сообщите об этом.
Обновление: см. Комментарии
В этом случае забудьте вышеуказанные изменения и измените метод onDraw
следующим образом.
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBackground, 0, 0, mBitmapPaint); //Make sure mBackground is the same size as the view.
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
canvas.drawPath(mPath, mPaint);
}
При сохранении вам придется наложить оба растровых изображения на новый растровый объект и затем, наконец, записать его на диск.
Чтобы перекрыть оба растровых изображения,
private Bitmap overlay(Bitmap bmp1, Bitmap bmp2) { //code borrowed from stackoverflow question 1540272
Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(), bmp1.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, new Matrix(), null); // or use the other overloaded functions
canvas.drawBitmap(bmp2, new Matrix(), null);
return bmOverlay;
}