我试图在用户触摸屏幕和删除触摸时绘制到不同的圆圈。 我有点成功但是当绘制“ACTION_UP”事件圈时,开始触摸圈消失了。
不确定出了什么问题。 我的OnDraw和OnTouch功能位于
之下public void onDraw(Canvas canvas) {
//drawing lines
//lines
canvas.drawCircle(point.x, point.y, 5, paint);
//circles
//canvas.drawCircle(point.x, point.y, 5, paint);
}
public boolean onTouch(View view, MotionEvent event) {
// if(event.getAction() != MotionEvent.ACTION_DOWN)
// return super.onTouchEvent(event);
// points.add(point);
switch(event.getAction()){
case MotionEvent.ACTION_DOWN :
point.x = (int)event.getX();
point.y = (int)event.getY();
paint.setColor(Color.BLACK);
break;
case MotionEvent.ACTION_UP:
point.x = (int)event.getX();
point.y = (int)event.getY();
paint.setColor(Color.BLUE);
break;
}
invalidate();
return true;
}
}
答案 0 :(得分:1)
如果您尝试在用户触摸屏幕并触摸删除时绘制多个圆圈,则需要使用List
个圆圈。你可以拥有一个ExampleCircle
类,它有一个x,y和颜色字段。
public class ExampleCircle{
int x,y;
Color color;
//setters and getters
}
// onTouch //假设您已经有一个List对象(List circleList = new ArrayList();)
ExampleCircle newCircle=new ExampleCircle();
switch(event.getAction()){
case MotionEvent.ACTION_DOWN :
newCircle.setX((int)event.getX());
newCircle.setY((int)event.getY()) ;
newCircle.setColor(paint.setColor(Color.BLACK));
break;
case MotionEvent.ACTION_UP:
newCircle.setX((int)event.getX());
newCircle.setY((int)event.getY()) ;
newCircle.setColor(paint.setColor(Color.BLACK));
break;
}
circleList.add(newCircle);
invalidate();
return true;
//关于绘制方法
替换
canvas.drawCircle(point.x, point.y, 5, paint);
与
for(int i=0;i<circleList.size();i++){
ExampleCircle currentCircle=circleList.get(i);
canvas.drawCircle(currentCircle.getX(), currentCircle.getY(), 5, paint or currentCircle.getColor());
}