试图检测按钮是否按下约3秒钟

时间:2013-02-05 02:59:42

标签: android

我看到一个应用程序,如果按下按钮它会播放铃声,然后如果你按下它,会出现一个消息框,询问你是否要保存声音文件。我想让我的应用程序检测按钮是否按下了几秒钟。

我无法弄清楚如何检测按钮是否长时间按下。我试着谷歌搜索它,但是空了。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

这取决于你对“像几秒钟”部分的具体程度。您可以在任何视图(包括OnLongClickListener ... docs link)上设置Button,这是用户可以理解的标准系统事件。但是,此事件的超时时间为500毫秒。

如果您确实需要将手指放下几秒钟,则需要自己计时,在这种情况下,OnTouchListener会在Handler上启动ACTION_DOWN并检查postDelayed()之后的视图状态通常可以解决问题。

答案 2 :(得分: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()并传递要设置侦听器的视图。 Reference

示例代码:

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 / Menu /文件夹下创建的.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);
    }
}