我看到一個應用程序,如果按下按鈕它會播放鈴聲,那麼如果你保持它,那麼一個消息盒裝出現問你是否願意保存聲音文件。我想讓我的應用程序檢測按鈕是否按下了幾秒鐘。試圖檢測一個按鈕是否被按下約3秒
我無法弄清楚如何檢測一個按鈕是否長時間按下。我嘗試了谷歌搜索,但空了。
我看到一個應用程序,如果按下按鈕它會播放鈴聲,那麼如果你保持它,那麼一個消息盒裝出現問你是否願意保存聲音文件。我想讓我的應用程序檢測按鈕是否按下了幾秒鐘。試圖檢測一個按鈕是否被按下約3秒
我無法弄清楚如何檢測一個按鈕是否長時間按下。我嘗試了谷歌搜索,但空了。
顯然你還沒有閱讀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);
}
}
您正在尋找OnGestureListener特別onLongPress:
如果你只想使用onLongPress,你要使用的方便類:
http://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html
這取決於你「在幾秒鐘內」的具體情況。您可以在任何視圖(包括Button
... docs link)上設置OnLongClickListener
,這是用戶理解的標準系統事件。但是,此事件的超時時間爲500毫秒。
如果你真的需要有手指按住多秒,您將需要此項賽事自己,在這種情況下,OnTouchListener
上ACTION_DOWN
開始Handler
並檢查視圖狀態postDelayed()
通常的伎倆後。
啓動一個觸摸式計時器,停止發佈? – Eric