两次按下按钮以获取Android上的功能

时间:2016-11-17 05:45:43

标签: android android-button

我想在android上实现按钮。该按钮有两个功能,单按至吐司消息,如果用户在毫秒内立即按两次按钮,则会显示警告对话框,如果延迟按下则会显示吐司消息。 请介绍一下如何执行android Button这些功能。

4 个答案:

答案 0 :(得分:3)

在onCreate声明

之前的活动中
private long lastclicked = 0;

然后是setOnClickListener

 button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
     //1000 replace your time in ms
    if (SystemClock.elapsedRealtime() - lastclicked < 1000){
        return;
    }
    lastclicked = SystemClock.elapsedRealtime();


    //perform here your task

   }
}

答案 1 :(得分:0)

试试这个,

在onCreate

之前创建一个布尔值
private boolean pressedOnce = false;

在onClickListener中使用第二个

的处理程序
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                if (pressedOnce) {
                   // show the alert dialog
                }

                pressedOnce = true;
                Toast.makeText(MainActivity.this, "Clicked once!", Toast.LENGTH_SHORT).show();

                new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        pressedOnce=false;
                    }
                }, 1000);
            }
        });

答案 2 :(得分:0)

您可以使用customButton和实现GestureDetector ,然后您可以覆盖 onSingleTapConfirmed和onDoubleTap 功能

答案 3 :(得分:0)

上述解决方案的替代方案是使用Android提供的GestureDetector,它允许您在其他手势中检测双击。

首先,您需要一个简单的嵌套类来处理双击:

private class DoubleTapListener extends GestureDetector.SimpleOnGestureListener {
    @Override
    public boolean onDoubleTap(MotionEvent e) {
        // Handle your double tap here.

        return true;
    }
}

GestureDetector的默认侦听器界面允许您收听许多各种触摸事件。 SimpleOnGestureListener提供了每个方法的空实现,因此您只能实现您感兴趣的方法。

接下来,您需要创建GestureDetector。您可以在onCreate的{​​{1}}中执行此操作。

Activity

不幸的是,您需要两次传递DoubleTapListener doubleTapListener = new DoubleTapListener(); GestureDetector gestureDetector = new GestureDetector(this, doubleTapListener); gestureDetector.setOnDoubleTapListener(doubleTapListener); - 第一次传递doubleTapListener以提供我们不感兴趣的方法的所有空实现。 OnGestureListener代表this

最后一部分是将onTouchEvent路由到我们的Context

GestureDetector

此解决方案需要更多代码,但另一方面,您依靠标准的Android方式来检测双击而不是创建自己的。