簡體   English   中英

如何交換兩個圈子

[英]How to swap two circles

我在班級的Canvas上繪制了36個圓圈,這是View類的擴展。

我想了解的是,如何像Play Store中的“兩點”游戲那樣在兩個位置之間改變它們的位置。

我怎樣才能做到這一點?

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

}


這是圖片: tinypic.com/r/20a9m4j/9 圖片

因此,您在自定義View繪制了36個圓,並且只想交換其中兩個? 有可能的。 只需將圓的x和y坐標( x + xArt, y + yArt )存儲在ArrayList 您以后可以使用它交換圈子。 但是在這里交換意味着您需要重新繪制所有36個圓圈。 這就是自定義視圖的問題,即使您進行了微小的更改,也需要重新繪制整個視圖。

就您而言,我認為這是昂貴且不必要的。 相反,您需要做的是編寫自定義ViewGroup或使用任何布局(如果足夠的話)。 將您的Circles作為子代添加到ViewGroup 現在,您可以簡單地使用getChild並交換它們。 這將不需要您重畫所有36個圓。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM