双击 android 上的功能按钮

Twice press button for functionality on android

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

在你的activity onCreate 声明之前

private long lastclicked = 0;

然后设置OnClickListener

 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

   }
}

试试这个,

在 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);
            }
        });

你可以使用 customButton 和 implements GestureDetector ,然后你可以覆盖 onSingleTapConfirmed 和 onDoubleTap funciton

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

首先你需要一个简单的嵌套 class 来处理你的双击:

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

        return true;
    }
}

GestureDetector 的默认侦听器接口允许您侦听许多不同的触摸事件。 SimpleOnGestureListener 提供了每个方法的空实现,因此您可以只实现您感兴趣的方法。

接下来您需要创建 GestureDetector。您可以在 ActivityonCreate 中执行此操作。

DoubleTapListener doubleTapListener = new DoubleTapListener();
GestureDetector gestureDetector = new GestureDetector(this, doubleTapListener);
gestureDetector.setOnDoubleTapListener(doubleTapListener);

不幸的是,您需要传递 doubleTapListener 两次 - 第一次传递为 OnGestureListener 以提供我们不感兴趣的方法的所有空实现。 this代表Context.

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

button.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        return gestureDetector.onTouchEvent(motionEvent);
    }
});

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