複数の長方形を描画しようとしています。ただし、各長方形を手で描画できるようにしたいです。描画することはできますが、invalidate() を呼び出すと、もちろんキャンバスはクリアされます。キャンバスがクリアされないように onDraw() を呼び出す別の方法はありますか? ここに私が持っているものがあります:
私は単にSurfaceViewを拡張してからonDrawをオーバーライドするクラスを持っています
@Override
protected void onDraw(Canvas canvas)
{
Paint paint = new Paint();
paint.setColor(Color.BLUE);
canvas.drawRect(xCoor, yCoor, rectW, rectH, paint);
}
そして、OnTouchEvent をオーバーライドします
@Override
public boolean onTouchEvent (MotionEvent event)
{
downX = Math.round(event.getX());
downY = Math.round(event.getY());
invalidate(); //clears canvas which I don't want
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
xCoor = downX;
yCoor = downY;
rectH = 0;
rectW = 0;
break;
case MotionEvent.ACTION_MOVE:
rectH = downY;
rectW = downX;
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
私はこれを完全に間違っていますか?:)
どんな助けでも大歓迎です。
ありがとう!