Java ANDROID:创建一个需要按下X秒的按钮
我想要的是有一个按钮,其中: 如果你只是推它,什么也不做 如果你按住它,比方说,3秒钟,执行一个动作 你知道怎么做吗Java ANDROID:创建一个需要按下X秒的按钮,java,android,button,Java,Android,Button,我想要的是有一个按钮,其中: 如果你只是推它,什么也不做 如果你按住它,比方说,3秒钟,执行一个动作 你知道怎么做吗 提前谢谢。手指朝下,启动一个3秒计时器。 如果计时器仍处于活动状态,则在竖起手指时取消它。 在计时器过期时运行操作 button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) {
提前谢谢。手指朝下,启动一个3秒计时器。 如果计时器仍处于活动状态,则在竖起手指时取消它。 在计时器过期时运行操作
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
// remeber here that ACTION_DOWN has occured
// set the timer for 3 seconds
// if ACTION_UP occured and timer has elapsed, then call action().
}});
或者正如ntc所注意到的,您可以改为只使用LongClickListener。这就是LongClickListener的用途:如果您希望能够指定时间,下面是OnTouchListener的一个实现,它可以为您指定时间,而无需使用计时器:
如果您不需要指定时间,只需按照其他人的建议使用OnLongClickListener即可。如果X秒对您来说并不重要,那么OnLongClickListener是否可以解决您的问题?我想这正是我想要的答案非常感谢您不是我想要的答案,因为我被要求有一个特定的时间被推,但非常感谢你,很好的回答
class TimedTouchListener implements OnTouchListener{
private final long millisRequired = 3000;
private long downTime;
@Override
public boolean onTouch(View v, MotionEvent event){
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
downTime = System.currentTimeMillis();
return true;
break;
case MotionEvent.ACTION_UP:
long upTime = System.currentTimeMillis();
if( upTime - downTime > millisRequired ){
doAction(); //doAction can be a method call, or any code you want to be executed.
return true;
}else{
return true;
}
}
return false;
}
}