2016-11-17 35 views
0

我想在android上實現按鈕。該按鈕有兩個功能,單按即可發送信息,如果用戶在毫秒內立即按下按鈕兩次,則會顯示警報對話框,如果延遲按下,則顯示敬酒信息。 請給我一些想法如何執行這些功能的android按鈕。兩次在android上按下按鈕功能

+0

爲什麼你不能實現點擊和長按鈕列表按鈕...? –

回答

4

在之前的onCreate您的活動申報

private long lastclicked = 0; 

然後setOnClickListener

button.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
    //1000 replace your time in ms 
    if (SystemClock.elapsedRealtime() - lastclicked < 1000){ 
     return; 
    } 
    lastclicked = SystemClock.elapsedRealtime(); 


    //perform here your task 

    } 
} 
0

試試這個,

的onCreate

private boolean pressedOnce = false; 

創建布爾在onClickListener使用的處理器爲第二

button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


       if (pressedOnce) { 
        // show the alert dialog 
       } 

       pressedOnce = true; 
       Toast.makeText(MainActivity.this, "Clicked once!", Toast.LENGTH_SHORT).show(); 

       new Handler().postDelayed(new Runnable() { 

        @Override 
        public void run() { 
         pressedOnce=false; 
        } 
       }, 1000); 
      } 
     }); 
0

可以使用的CustomButton和實現GestureDetector,然後你就可以覆蓋onSingleTapConfirmed和onDoubleTap功能可按

0

上面提出的解決方案,另一種方法是使用Android - 提供GestureDetector,它允許您檢測其他手勢中的雙擊。

首先你需要一個簡單的嵌套類來處理您雙擊:

private class DoubleTapListener extends GestureDetector.SimpleOnGestureListener { 
    @Override 
    public boolean onDoubleTap(MotionEvent e) { 
     // Handle your double tap here. 

     return true; 
    } 
} 

GestureDetector的默認監聽器接口,您可以欣賞很多不同的觸摸事件。 SimpleOnGestureListener提供了每種方法的空白實現,因此您只能實現您感興趣的方法。

接下來,您需要創建您的GestureDetector。您可以在ActivityonCreate中執行此操作。

DoubleTapListener doubleTapListener = new DoubleTapListener(); 
GestureDetector gestureDetector = new GestureDetector(this, doubleTapListener); 
gestureDetector.setOnDoubleTapListener(doubleTapListener); 

不幸的是,你需要通過你的doubleTapListener兩次 - 這是爲OnGestureListener傳遞的第一時間提供所有的空實現對不感興趣的網站的方法。 this代表Context

最後一部分是將您的onTouchEvent路由到我們的GestureDetector

button.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     return gestureDetector.onTouchEvent(motionEvent); 
    } 
}); 

該解決方案需要稍多的代碼,但在另一方面,你依靠Android標準的方法來檢測,而不是創建自己的雙水龍頭。