【发布时间】:2020-04-10 09:13:43
【问题描述】:
我正在尝试在用户触摸的点绘制一个圆圈。我正在使用 onTouchEvent() 来获取触摸的 x y 坐标。以下代码在屏幕的右上角添加了一个圆圈。但是当我使用无效时() 函数之前的'break;' onTouchEvent() 中的语句,出现了圆圈,但是当我在其他位置触摸时,前一个圆圈被擦除,并且在新的触摸位置绘制了一个新圆圈。 如何修改此代码,以便在每个 ACTION_DOWN onTouchEvent() 上在该点上绘制一个圆圈,并且之前绘制的圆圈也不会被删除。
public class TestView3 extends View {
private static final String TAG = "TestView3";
Paint paint = new Paint();
float mX,mY;
public TestView3(Context context, AttributeSet attributeSet){
super(context);
Log.d(TAG, "TestView3: constructor called");
paint.setColor(Color.BLACK);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.d(TAG, "onDraw: called");
//canvas.drawLine(0,0,20,20,paint);
//canvas.drawLine(20,0,0,20,paint);
canvas.drawCircle(mX,mY,10,paint);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
Log.d(TAG, "onTouchEvent: Action_down happend");
mX = x;
mY = y;
break;
}
return true;
}
}
【问题讨论】:
标签: android android-studio android-canvas touch-event