如何交换两个圆圈
How to swap two circles
我在 class 中的 Canvas 上画了 36 个圆圈,它是从视图 class 扩展而来的。
我想了解的是,我怎样才能像 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 个圆圈。这就是自定义视图的问题,即使您进行了细微的更改也需要重新绘制整个视图。
对于你的情况,我认为这是昂贵且不必要的。相反,您需要做的是编写自定义 ViewGroup
或使用任何布局(如果足够的话)。将您的 Circles
作为 children 添加到 ViewGroup
。现在您可以简单地使用 getChild
并交换它们。这将不需要您重新绘制所有 36 个圆圈。
我在 class 中的 Canvas 上画了 36 个圆圈,它是从视图 class 扩展而来的。
我想了解的是,我怎样才能像 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 个圆圈。这就是自定义视图的问题,即使您进行了细微的更改也需要重新绘制整个视图。
对于你的情况,我认为这是昂贵且不必要的。相反,您需要做的是编写自定义 ViewGroup
或使用任何布局(如果足够的话)。将您的 Circles
作为 children 添加到 ViewGroup
。现在您可以简单地使用 getChild
并交换它们。这将不需要您重新绘制所有 36 个圆圈。