Графика должна сохраняться, когда другая кнопка на операции нажата

В моем примере, когда я нажимаю кнопку, отображается форма, но когда я нажимаю другую кнопку, предыдущая форма стирается. Я хочу, чтобы форма сохранялась при нажатии другой кнопки. Я использую метод invalidate() после отображения каждой фигуры. Можете ли вы, пожалуйста, дать мне решение? Ниже представлена ​​деятельность, которую я использовал.

 public class StartMyDrawView extends Activity{ MyDrawView mydrawview; public static int action=0; Intent netIntent; LinearLayout draw ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("StartMyDrawView", "OnCreate()"); setContentView(R.layout.designgraphic); draw = (LinearLayout) findViewById(R.id.linearLayout1); Button btnLine=(Button) findViewById(R.id.button1); Button btnCircle=(Button) findViewById(R.id.button2); Button btnRectangle=(Button) findViewById(R.id.button4); Button btnText=(Button) findViewById(R.id.button5); btnLine.setOnClickListener(new OnClickListener() { public void onClick(View v) { action=1; draw.invalidate(); } }); btnCircle.setOnClickListener(new OnClickListener() { public void onClick(View v) { action=2; draw.invalidate(); } }); btnRectangle.setOnClickListener(new OnClickListener() { public void onClick(View v) { action=3; draw.invalidate(); } }); btnText.setOnClickListener(new OnClickListener() { public void onClick(View v) { action=4; draw.invalidate(); } }); mydrawview =new MyDrawView(this); draw.addView(mydrawview); } 

}

И мой класс, который расширяет представление, выглядит следующим образом

Открытый класс MyDrawView extends View {

 Paint paint = new Paint(); int actionVal=0; public MyDrawView(Context context) { super(context); } public void onDraw(Canvas canvas) { super.onDraw(canvas); paint.setColor(Color.RED); paint.setStyle(Paint.Style.STROKE); if(StartMyDrawView.action==1) canvas.drawLine(0, 0, 200, 200, paint); if(StartMyDrawView.action==2) canvas.drawCircle(150, 150, 50, paint); if(StartMyDrawView.action==3) canvas.drawRect(20, 20, 150, 150, paint); if(StartMyDrawView.action==4) canvas.drawText("JUST DEMO", 150, 150, paint); } 

}

Я думаю, что холст очищается каждый раз при вызове onDraw.

Один из способов решения проблемы состоит в том, чтобы сохранить состояние, выполнив операции рисования на глобальном растровом изображении, а onDraw будет рисовать битмап на холсте. Это не так много работы, и для примера см. Принятый ответ здесь .

Тема Android Developers на рисунки здесь .