我在我的类中的 Canvas 上画了 36 个圆圈,该类是从 View 类扩展的。
我想了解的是,如何更改它们之间的位置,就像 Play 商店中的“两点”游戏一样。
我怎样才能做到这一点?
这是我的 onDraw 方法代码:
@Override
protected void onDraw (Canvas canvas){
// TODO Auto-generated method stub
super.onDraw(canvas);
int xArt = 0, yArt = 0, x, y;
x = getWidth() / 4 - 50;
y = getHeight() / 2 - 50;
canvas.drawARGB(96, 25, 139, 10);
for (int i = 1; i < 37; i++) {
canvas.drawCircle(x + xArt, y + yArt, 30, paint.get(i));
yArt += 100;
if (i % 6 == 0) {
xArt += 100;
yArt = 0;
}
}
}
最佳答案
您在自定义View
中绘制了 36 个圆圈,而您只想交换其中两个?有可能的。只需将圆的 x 和 y 坐标 (x + xArt, y + yArt
) 存储在 ArrayList
中即可。您稍后可以使用它来交换圆圈。但这里交换就意味着需要重新绘制所有36个圆。这就是自定义 View 的问题,即使你做了微小的改变,你也需要重绘整个 View 。
就你而言,我认为这是昂贵且不必要的。相反,您需要做的是编写自定义 ViewGroup
或使用任何布局(如果足够的话)。将您的Circles
作为子项添加到ViewGroup
中。现在您可以简单地使用 getChild
并交换它们。这不需要您重新绘制所有 36 个圆圈。
关于java - 如何交换两个圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599398/