我看到一个应用程序,如果按下按钮它会播放铃声,那么如果你保持它,那么一个消息盒装出现问你是否愿意保存声音文件。我想让我的应用程序检测按钮是否按下了几秒钟。试图检测一个按钮是否被按下约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