[英]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.