2014-01-08 88 views
0

我有7個圓圈和6列的行我想這取決於所使用的onClick顯示圖像的OnClick的Android

int rows, cols; 
    rows = 7; 
    cols = 6; 
    for (int i=0; i <rows; i++) { 
     for (int j=0; j< cols; j++) { 
     canvas.drawCircle(90 + (100*i), 155 + (115*j), 40, white); 
     } 
    } 

單擊圓使用以顯示圖像

.OnClickListener 

這怎麼可能?

+0

覆蓋onTouch獲取協調的x和y並調用invalidate刷新繪圖 – Raghunandan

+0

是否願意將解決方案更改爲GridView?這使得它更容易做你想做的事情,包括設置原始表 – SalGad

+0

如何獲得x和y座標?因爲它在for循環 – user3146973

回答

0

覆蓋onTouchEvent

使用實例變量float x,y

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     x = event.getX(); 
     y = event.getY(); 
     invalidate(); // to refresh draw 
     return true; 
    } 

使用xy繪製圖像。

public boolean onTouchEvent (MotionEvent event) 

Added in API level 1 
Implement this method to handle touch screen motion events. 

If this method is used to detect click actions, it is recommended that the actions be performed by implementing and calling performClick(). This will ensure consistent system behavior, including: 

obeying click sound preferences 
dispatching OnClickListener calls 
handling ACTION_CLICK when accessibility features are enabled 
Parameters 
event The motion event. 
Returns 
True if the event was handled, false otherwise. 

您需要知道圓的中心和半徑以檢測與圓的接觸。

我是這有助於你瞭解 Creating a spray effect on touch draw in android

+0

For循環顯示的是圓圈,我不能刪除它們,我想單擊這些圓圈並根據所選圖像應出現的圓圈,是連接4遊戲 – user3146973

+0

@ user3146973我不明白。你應該更具體。 – Raghunandan

+0

@ user3146973你如何設法知道哪個圈子被點擊?做每個圓的半徑嗎? – Raghunandan

0

如果覆蓋onTouchEven你可以觸摸的x和y。

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    int x = (int)event.getX(); 
    int y = (int)event.getY(); 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
     case MotionEvent.ACTION_MOVE: 
     case MotionEvent.ACTION_UP: 
} 

return true }

現在,如果你使用使用X和Y中的onTouchEvent增值的畫圓的功能,你感動,你會確切地畫出來。

+0

這個圈子應該保持原樣,這是一個連接4場比賽。根據點擊的圓圈,我希望計數器位於該圓圈內 – user3146973