2015-08-25 56 views
1

我在一個活動的onCreate方法如下代碼:製備亞查看傾聽雙擊AndroidStudio

GridLayout gridLayout = new GridLayout(this); 
gridLayout.setColumnCount(5); 
gridLayout.setRowCount(5); 
for (int i = 0; i < 25; i++) { 
    ImageView imageView = new ImageView(this); 
    gridLayout.addView(imageView, i); 
} 
setContentView(gridLayout); 

現在,我想每個ImageView的中網格佈局,以應對(聽)雙擊。我怎麼能這樣做呢? (我已經在其中一個視圖上使用了長按來執行不同的動作,所以我不能只用這個來代替,儘管我知道這樣會更容易,因爲它有一個本地監聽器。)

+0

可能的重複[如何將雙擊事件放置在Android ImageView上](http://stackoverflow.com/questions/5191456/how-can-i-place-double-click-event-on-imageview-在-機器人) – royB

回答

0

你有兩個選擇:

1)使用布爾與處理程序(如this answer

  • 添加boolean doubleClick = false;
  • Handler doubleHandler
  • 中的onClick檢查doubleClick is true
    • 如果是真的,這是一個雙擊
    • 如果不是,設置doubleClick爲true,並 使用處理器postDelayed設置 回假,即500ms的

2)使用GestureListeneronDoubleTap()方法)

0

有可能是一個更好的辦法,而是跳轉到我的腦海裏的第一件事:

有一個布爾標記視圖點擊

時設置爲true最近點擊

創建一個Runnable外onClick方法(只有一個,不要每個點擊一個,因爲android限制了我們可以擁有的線程數量。也剛剛好做法。)

Runnable doubleClick = new Runnable() { 
    @Override 
    public void run() { 
     recentClick = false; 
    } 
} 

那麼如果這是第一次點擊(recentClick是假的),使用

final Handler handler = new Handler(); 
handler.postDelayed(doubleClick, 100); 

後100毫秒

如果的onClick觸發的

布爾重置並且布爾值被設置爲true,那麼您有雙擊。