2013-02-05 96 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()通常的伎俩后。

相关问题