Java ANDROID:创建一个需要按下X秒的按钮

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秒钟,执行一个动作

你知道怎么做吗


提前谢谢。

手指朝下,启动一个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;
    }
}