Событие двойного щелчка в Android

Как реализовать событие двойного щелчка в Android без использования детектора жестов?


person user386430    schedule 14.07.2010    source источник
comment
Что такое двойной клик на экране мобильного?   -  person Pentium10    schedule 14.07.2010
comment
Почему нельзя использовать детектор жестов?   -  person Janusz    schedule 14.07.2010


Ответы (5)


Если вы имеете в виду двойное касание, вы должны использовать GestureDetector.OnDoubleTapListener.

person Robby Pond    schedule 14.07.2010

Я уверен, что весь код там определяет, был ли второй щелчок в течение определенного времени после первого щелчка, в противном случае рассматривайте его как второй щелчок. Я бы во всяком случае так поступил.

person the_dirty_burger    schedule 08.09.2011

просто используйте 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;
            }
        });
    }
}
person wuliang8910    schedule 12.12.2014

Вот смотрите, это библиотека в jar для прослушивания сенсорных жестов, внедряйте и работайте ) zНажмите

person Nikolay Kolomiytsev    schedule 09.03.2015

Посмотрите исходный код для GestureDetector и скопируйте нужные вам биты (в частности, посмотрите на метод isConsideredDoubleTap)

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

person oli    schedule 14.07.2010
comment
я использую приложение диаграммы, если я щелкну точку для двойного щелчка, он перейдет к другому действию. если я использую детектор жестов, если я щелкну где угодно, он перейдет к другому действию - person user386430; 16.07.2010