2013-02-05 126 views
0

我看到一個應用程序,如果按下按鈕它會播放鈴聲,那麼如果你保持它,那麼一個消息盒裝出現問你是否願意保存聲音文件。我想讓我的應用程序檢測按鈕是否按下了幾秒鐘。試圖檢測一個按鈕是否被按下約3秒

我無法弄清楚如何檢測一個按鈕是否長時間按下。我嘗試了谷歌搜索,但空了。

+0

啓動一個觸摸式計時器,停止發佈? – Eric

回答

0

顯然你還沒有閱讀onLongClickListener呵呵?

閱讀以下鏈接:

http://developer.android.com/reference/android/view/View.OnLongClickListener.html

示例代碼:

buttonPlay.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      //Do something when clicked normally. 
     } 
    }); 

    buttonPlay.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 
      //Offer additional options when the view is held. 
      return true; 
     } 
    }); 

此外,您還可以調用registerForContextMenu()來代替,並通過你想設置的監聽器查看。

示例代碼:

registerForContextMenu(textView);//Registering the TextView textview for longclicks 

您必須編寫的代碼膨脹的上下文菜單:

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.your_context_menu, menu); 
    }  
} 

其中ID your_context_menu必須下RES創建的.xml文件/您的項目上的菜單/文件夾。

一旦菜單被充滿,您還必須編寫代碼來響應所選的選項。

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    Intent broadcast = new Intent(); 
    switch (item.getItemId()) { 
    case R.id.menu_option_one:   
    //do something 
    return true; 
    default: 
     return super.onContextItemSelected(item); 
    } 
} 
0

這取決於你「在幾秒鐘內」的具體情況。您可以在任何視圖(包括Button ... docs link)上設置OnLongClickListener,這是用戶理解的標準系統事件。但是,此事件的超時時間爲500毫秒。

如果你真的需要有手指按住多秒,您將需要此項賽事自己,在這種情況下,OnTouchListenerACTION_DOWN開始Handler並檢查視圖狀態postDelayed()通常的伎倆後。

相關問題