Я переопределил метод onDraw() следующим образом:
public void onDraw(Canvas canvas1){
Canvas canvas2 = new Canvas();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.graphic1);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.graphic2);
canvas1.drawBitmap(
top,
new Rect(0, 0, graphic1.getWidth(), graphic1.getHeight()),
new Rect(0, 0, width, width),
null);
canvas2.drawBitmap(
top,
new Rect(0, 0, graphic2.getWidth(), graphic2.getHeight()),
new Rect(0, 0, width, width),
null);
}
Отображается только графическое изображение1 на холсте1, canvas2 и graphic2 - нет. Как я могу отображать несколько холстов на одном представлении?
Как говорится в комментарии, вы не прикрепляете Canvas2 ко всему. Вы создаете его каждый фрейм (что плохо), рисуя его, а затем позволяя ему перейти к нашей области, чтобы собирать мусор. Что вы должны сделать, это создать Canvas2 с поддержкой Bitmap в конструкторе вашего представления и сохранить его в качестве члена. Затем вы можете нарисовать его, а затем разбить его Bitmap на Canvas1. Например:
public MyCustomView(Context context)
{
super(context);
_canvas2 = new Canvas(_backingBitmap);
}
public void onDraw(Canvas canvas1)
{
Bitmap graphic1 = BitmapFactory.decodeResource(getResources(), R.drawable.graphic1);
Bitmap graphic2 = BitmapFactory.decodeResource(getResources(), R.drawable.graphic2);
canvas1.drawBitmap(
top,
new Rect(0, 0, graphic1.getWidth(), graphic1.getHeight()),
new Rect(0, 0, width, width),
null);
_canvas2.drawBitmap(
top,
new Rect(0, 0, graphic2.getWidth(), graphic2.getHeight()),
new Rect(0, 0, width, width),
null);
canvas1.drawBitmap(
top,
new Rect(0, 0, _backingBitmap.getWidth(), _backingBitmap.getHeight()),
new Rect(0, 0, width, width),
null);
}