触摸时以及在自定义视图中删除触摸时绘制圆

时间:2014-08-04 03:52:31

标签: java android android-canvas

我试图在用户触摸屏幕和删除触摸时绘制到不同的圆圈。 我有点成功但是当绘制“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;
}

}

1 个答案:

答案 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());

}