Wykrywanie długiego naciśnięcia w systemie Android
Obecnie używam
onTouchEvent(MotionEvent event){
}
aby wykryć, kiedy użytkownik kliknie mój glSurfaceView, czy istnieje sposób na wykrycie, kiedy następuje długie kliknięcie. Myślę, że jeśli nie mogę znaleźć zbyt wiele w dokumentacji deweloperskiej, to będzie to jakieś obejście. Coś jak rejestracja ACTION_DOWN i zobaczenie, ile czasu minie, zanim ACTION_UP.
Jak wykryć długie naciśnięcia na Androidzie za pomocą OpenGL-es?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
11 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
GestureDetector
to najlepsze rozwiązanie.
Oto interesująca alternatywa. W
onTouchEvent
na każdym
ACTION_DOWN
zaplanuj uruchomienie obiektu w 1 sekundę. Na każdym
ACTION_UP
lub
ACTION_MOVE
anulować zaplanowane wykonanie. Jeśli odwołanie nastąpi krócej niż 1 sekundę od wydarzenia
ACTION_DOWN
Runnable nie będzie działać.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
To spora kombinacja powyższej odpowiedzi i zmian, które wprowadziłem, patrząc na każdą stronę dokumentacji.
Potwierdzam, że działa tak, jak użyłem go we własnej aplikacji.
Anonimowy użytkownik
Potwierdzenie od:
Musisz więc użyć onClickListener, jeśli jest to kliknięcie.
Twoja odpowiedź jest podobna: użyj onLongClickListener.
Anonimowy użytkownik
Potwierdzenie od:
skrawek
https://gist.github.com/Benjoy ... 2a26f
- Zainspirowany rzeczywistym źródłem widoku - które niezawodnie wykrywa długie kliknięcia/stuknięcia z niestandardowym opóźnieniem. Ale to jest w 28 roku:
Anonimowy użytkownik
Potwierdzenie od:
Więc dodałem mały próg odległości między akcjami DOWN i UP na wypadek, gdyby między nimi była akcja MOVE.
Anonimowy użytkownik
Potwierdzenie od:
Musisz także wiedzieć, kiedy długie kliknięcie zostało zużyte, a kiedy zostało anulowane, ponieważ palec poruszył się zbyt mocno. Używamy & amp; , aby przetestować wyjście użytkownika z obszaru kwadratu o wielkości 10 pikseli, po 5 z każdej strony.
Oto mój kompletny kod do delegacji
Click & LongClick
od do do z :
to służący do wysyłania zdarzeń kliknięcia do klasy modułu obsługi jako
Wszystko, co musisz zrobić, to zaimplementować to w swoim lub nadrzędnym , jeśli chcesz delegować zachowanie:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Zwróć uwagę, że, jak donoszą inni, usunięcie wywołania zwrotnego w odpowiedzi na komunikat MotionEvent.ACTION_MOVE uniemożliwiło wykonanie wywołania zwrotnego, ponieważ nie mogłem wystarczająco trzymać palca. Omówiłem ten problem, ignorując tę wiadomość.
Anonimowy użytkownik
Potwierdzenie od:
posługiwać się
Gdzie
W kodzie
Anonimowy użytkownik
Potwierdzenie od: