Java 如何交换两个圆

Java 如何交换两个圆,java,android,android-canvas,android-view,Java,Android,Android Canvas,Android View,在我的课上,我在画布上画了36个圆圈,这是从View课扩展而来的 我想了解的是,我怎样才能像游戏商店里的两点游戏一样,改变他们在两人之间的位置 我该怎么做 以下是我的onDraw方法代码: @Override protected void onDraw (Canvas canvas){ // TODO Auto-generated method stub super.onDraw(canvas); int xArt = 0, yArt = 0, x, y; x =

在我的课上,我在画布上画了36个圆圈,这是从View课扩展而来的

我想了解的是,我怎样才能像游戏商店里的两点游戏一样,改变他们在两人之间的位置

我该怎么做

以下是我的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;
        }
    }

}
@覆盖
受保护的void onDraw(画布){
//TODO自动生成的方法存根
super.onDraw(帆布);
int-xArt=0,yArt=0,x,y;
x=getWidth()/4-50;
y=getHeight()/2-50;
画布.drawARGB(96,25,139,10);
对于(int i=1;i<37;i++){
画布.画圈(x+xArt,y+yArt,30,paint.get(i));
yArt+=100;
如果(i%6==0){
xArt+=100;
yArt=0;
}
}
}

图片如下:

那么您在自定义的
视图中绘制了36个圆,您只想交换其中的两个?这是可能的。只需将圆的x和y坐标(
x+xArt,y+yArt
)存储在
阵列列表中即可。以后可以使用此选项交换圆。但是在这里交换意味着你需要重新绘制所有36个圆圈。这就是自定义视图的问题所在,即使您做了一点小小的更改,也需要重新绘制整个视图


在你的情况下,我认为这是昂贵和不必要的。相反,您需要做的是编写一个自定义的
ViewGroup
,或者在足够的情况下使用任何布局。将
圆圈
作为子对象添加到
视图组
。现在您可以简单地使用
getChild
并交换它们。这不需要您重新绘制所有36个圆。

可能您可以使用一些数组来存储圆(位图),然后交换!