Android: рисунок на новом холсте

Я создал пользовательский вид, расширив View.

public class CustomView extends View { private Canvas canvas2; private Bitmap backingBitmap; 

В конструкторе CustomView у меня есть следующий код:

 backingBitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); canvas2 = new Canvas(backingBitmap); 

В onDraw у меня есть:

 protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(100, 100, 50, paint); canvas2.drawCircle(0, 0, 10, paint); } 

Я вижу круг, который нарисован с использованием объекта canvas, но не тот, который нарисован с использованием объекта canvas2. Мое понимание заключается в том, что нужно создать только изменяемый Bitmap и сделать его растровым изображением Canvas. Может кто-нибудь указать, что здесь не так?

Бонусный вопрос: где создается пользовательский объект canvas на экране, и как бы установить его положение?

Причина создания нескольких холстов: у меня есть SurfaceView, который охватывает весь экран. Таким образом, в основном его холст покрывает весь экран. Мне нужно сделать прямоугольник, похожий на окно, на экране, и все, что нужно, нужно оживить в пределах этого окна. В принципе, если вы переводите изображение в это окно, изображение не должно рисоваться за пределами границ окна.

Ура!

Я понял, что случилось с моим пониманием. Теперь все кажется таким простым! Эта ссылка помогла.

В принципе, когда мы создаем объект Canvas, он создает внеэкранный холст, содержащий наши призывы рисования. Этот объект Canvas должен быть подкреплен изменчивым растровым изображением, так что все рисунки, наконец, будут сохранены в этом растровом изображении. Как только рисунок будет выполнен, вы можете нарисовать измененное растровое изображение, используя холст, который привязан к поверхности (холст, который вы получаете в onDraw).

В моем коде я сделал следующие изменения, чтобы заставить его работать.

 protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(100, 100, 50, paint); canvas2.drawCircle(25, 25, 25, paint); canvas.drawBitmap(backingBitmap, 200, 90, paint); }