gpt4 book ai didi

java - 在自定义 View 中触摸和删除触摸时绘制圆圈

转载 作者:行者123 更新时间:2023-11-30 02:45:30 24 4
gpt4 key购买 nike

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

}

最佳答案

如果您尝试在用户触摸屏幕并移除触摸时绘制多个圆圈,则需要使用圆圈的 List。你可以有一个 ExampleCircle 类,它有一个 x、y 和颜色字段。

public class ExampleCircle{

int x,y;
Color color;
//setters and getters

}

//触摸//假设你已经有一个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());

}

关于java - 在自定义 View 中触摸和删除触摸时绘制圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25111527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com