gpt4 book ai didi

Android OnTouch 事件众多对象

转载 作者:行者123 更新时间:2023-11-29 22:19:38 26 4
gpt4 key购买 nike

好的,我正在玩扩展 View 的 ontouch 事件。

我所做的是在触摸时形成一个圆圈。当你移动时,圆圈会随之而来。当你移动另一个圆圈时,它会位于递减半径的位置,直到它消失……(现在最多有 10 个圆圈)。我还可以处理多个手指在一个时间点的触摸。这就是问题所在……代码很糟糕!

创建多个圆这是我的绘画方法:

public void onDraw(Canvas canvas)
{
paint.setColor(Color.RED);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(stroke);
canvas.drawCircle(x,y,radius,paint);
canvas.drawCircle(x1,y1,radius1,paint);
canvas.drawCircle(x2,y2,radius2,paint);
canvas.drawCircle(x3,y3,radius3,paint);
canvas.drawCircle(x4,y4,radius4,paint);
canvas.drawCircle(x5,y5,radius5,paint);
canvas.drawCircle(x6,y6,radius6,paint);

paint.setColor(Color.BLUE);
canvas.drawCircle(x7,y7,radius7,paint);
canvas.drawCircle(x8,y8,radius8,paint);

paint.setColor(Color.YELLOW);
canvas.drawCircle(x9,y9,radius9,paint);
canvas.drawCircle(x10,y10,radius10,paint);
}

所以你可以看到,到目前为止,这是低效的,并且会产生一些冗长的令人讨厌的代码。部分问题是我必须只能在 Ontouch 中更改坐标......并使之无效。任何人都知道我可以更有效地做到这一点的方法(以更面向对象的类型方法)。

最佳答案

首先,从这里开始:

public class Circle {
public int x;
public int y;
public double radius;
public Paint paint;

/* constructors, getters & setters if you feel like ...*/

}

然后把你所有的圈子放在一个

ArrayList<Circle> circles = new ArrayList();


public void onDraw(Canvas canvas)
{
/*...*/
Iterator iterator = circles.iterator();
while(iterator.hasNext()) {
drawCircle(iterator.next());
}
}

public void drawCircle(Canvas canvas, Circle circle) {
canvas.drawCircle(circle.x, circle.y, circle.raidus, circle.paint);
}

关于Android OnTouch 事件众多对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7583514/

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