2015-11-08 53 views
0

我在畫布上繪製了36個圈,這是從View類擴展而來的。如何交換兩個圓圈

我想了解的是,如何在Play Store中的Two Dots遊戲之間更改他們之間的位置。

我該怎麼做?

這裏是我的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 The picture

+0

也許你可以使用一些數組來存儲你的圈子(位圖),然後交換! –

回答

2

所以,你必須在一個自定義View繪製36圈,要交換僅僅兩他們?有可能的。只需在ArrayList中存儲圓圈的x和y座標(x + xArt, y + yArt)即可。您稍後可以使用它來交換圈子。但是在這裏交換意味着你需要重繪所有的36個圓圈。這就是自定義視圖的問題,即使您稍做改動,您也需要重新繪製整個視圖。

在你的情況,我認爲這是昂貴的和不必要的。相反,你需要做的是寫一個自定義ViewGroup或使用任何佈局,如果這是足夠的。將您的Circles作爲子女添加到ViewGroup。現在你可以簡單地使用getChild並交換它們。這不需要你重畫所有的36個圓圈。