7

如何在不使用手势检测器的情况下在android中实现双击事件?

4

5 回答 5

8

如果您的意思是双击,则必须使用GestureDetector.OnDoubleTapListener

于 2010-07-14T13:20:54.533 回答
2

我确信那里的所有代码都是确定第二次点击是否在第一次点击的特定时间内,否则将其视为第二次点击。无论如何我都会这样做。

于 2011-09-08T22:55:05.687 回答
1

只需使用 setOnTouchListener 记录第一次和第二次点击时间。如果它们非常接近,则将其确定为双击。像这样,

public class MyActivity extends Activity {

    private final String DEBUG_TAG= "MyActivity";
    private long firstClick;
    private long lastClick;
    private int count; // to count click times

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Button mButton= (Button)findViewById(R.id.my_button);
        mButton.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                switch (motionEvent.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        // if the second happens too late, regard it as first click
                        if (firstClick != 0 && System.currentTimeMillis() - firstClick > 300) {
                            count = 0;
                        }
                        count++;
                        if (count == 1) {
                            firstClick = System.currentTimeMillis();
                        } else if (count == 2) {
                            lastClick = System.currentTimeMillis();
                            // if these two clicks is closer than 300 millis second 
                            if (lastClick - firstClick < 300) {
                                Log.d(DEBUG_TAG,"a double click happened");
                            }
                        }
                        break;
                    case MotionEvent.ACTION_MOVE:
                        break;
                    case MotionEvent.ACTION_UP:
                        break;
                }
                return true;
            }
        });
    }
}
于 2014-12-12T09:28:34.500 回答
1

看这里,这是用于监听触摸手势、实现和工作的 jar 库) https://github.com/NikolayKolomiytsev/zTouch

于 2015-03-09T21:31:33.187 回答
0

查看源代码GestureDetector并复制您需要的位(具体看isConsideredDoubleTap方法)

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/GestureDetector.java

于 2010-07-14T12:21:06.003 回答