Próbuję zaimplementować funkcję pinch-zoom w tworzonej aplikacji i mam problemy ze zdarzeniem onTouch. Wygląda na to, że ruchy w górę do góry o & nie strzelają natychmiast, tak jakbyś nie miał wskaźnika w górę lub w dół, dopóki nie pojawi się ruch akcji. Co się dzieje, gdy oba palce dotykają ekranu niemal jednocześnie, to to, że drugi palec (powinien być wskaźnikiem (1)) dostaje ruch, zanim wywoływany jest wskaźnik, co powoduje, że kod myśli, że jest to DRAG, a nie przybliżenie. Ktoś jeszcze to widział? W każdym razie dookoła niego? Dzięki.Zdarzenie onTouch czasami nie wyzwala ACTION_POINTER_DOWN
Odpowiedz
Miałem ten sam problem w moim projekcie. Jeśli dotknę ekranu, a moje palce są zbyt blisko, system nie zrealizuje zdarzenia wielodotykowego. Myślę, że to dlatego, że kiedy twoje palce są zbyt blisko, system postrzega je jako pojedynczy palec.
Być może możesz sprawdzić to założenie, używając metody getSize(), aby oszacować obszar ekranu wciśniętego po dotknięciu ekranu jednym palcem i po dotknięciu ekranu dwoma palcami blisko grzałki.
Okazało się, że jest to problem z niestandardową pamięcią ROM, którą wysłałem do mojego Evo. Jeszcze raz dziękuję hara za ich rady, ponieważ okazało się, że to kolejny błąd, który miałem.
obliczu tego samego problemu okazało się, że ACTION_POINTER_2_DOWN był zwolniony w mojej aplikacji, kiedy dotknął drugi palec, a potem ACTION_MOVE został zwolniony metoda getAction() daje liczbę zdarzeń, które musi być sprawdzone przeciwko tej liście
http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_MOVE – Omkar
Pamiętaj, aby włączyć MotionEvent.ACTION_MASK w swoim przełączniku. Na przykład:
switch(event.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_DOWN:
some code
break;
case MotionEvent.ACTION_POINTER_DOWN:
ETC
Mam rozwiązać ten sam problem z tym:
switch(event.getActionMasked()) {
case MotionEvent.ACTION_POINTER_DOWN:
//your code
break;
}
Zauważyłem, że ten (MotionEvent.ACTION_POINTER_DOWN) Sprawa wyrzuceniu jeśli onTouch metoda (event) powrócił jako prawda jak podano poniżej:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(motionEvent.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
//your code
break ;
}
return true;
}
Uwaga: MotionEvent.ACTION_DOWN tylko coraz słuchał jeśli metoda onTouch() ma r przywrócił wartość boolowską jako return super.onTouchEvent (zdarzenie); więc upewnij się, że to prawda, aby uniknąć tej sytuacji.
- 1. Angular JS - UI Router Zdarzenie stateChangeSuccess nie wyzwala
- 2. RingtonePreference nie wyzwala onSharedPreferenceChanged
- 3. Zmiana rozmiaru elementu wyzwala zdarzenie zmiany rozmiaru okna.
- 4. Ustawienie {cichy: true} podczas resetowania kolekcji nadal wyzwala zdarzenie "reset".
- 5. Połączenie jest zamykane, gdy zdarzenie SQLAlchemy wyzwala zadanie Celery
- 6. Dwustronne wiązanie tekstowe nie wyzwala
- 7. jQuery FileUpload nie wyzwala 'done'
- 8. angular.js: aktualizacja modelu nie wyzwala aktualizacji widoku
- 9. .Net FtpWebRequest nie czasami
- 10. Przeglądarka czasami ignoruje zdarzenie kliknięcia jQuery podczas transformacji CSS3
- 11. Jak obsługiwać zdarzenie onTouch dla mapy w Google Map API v2?
- 12. Zdarzenie wysłane przez serwer EventStream nie wyzwala "komunikatu", ale Chrome Debug wyświetla dane w zakładce "EventStream".
- 13. Jak narysować wielokąt na MapView, wypełnić go i umieścić na nim zdarzenie onTouch
- 14. Dlaczego Spring @Configurable czasami działa, a czasami nie?
- 15. dlaczego debugowanie firebuga czasami działa, a czasami nie?
- 16. Android onTouch z onClick i onLongClick
- 17. Dodanie UILabel jako wyskoku UIButton nie wyzwala działania przycisku
- 18. Dynamic select2 nie wyzwala zmiany zdarzenia
- 19. Android: EditText NextFocusDown nie wyzwala Spinner
- 20. Funkcja aktualizacji węzła niestandardowego nie wyzwala
- 21. Android GoogleAuthUtil.getTokenWithNotification Intent wywołanie zwrotne nie wyzwala
- 22. Wywołanie kolejki Azure WebJobs nie wyzwala
- 23. Kontrola WebBrowser nie wyzwala procedur obsługi zdarzeń
- 24. SelectedIndex z wiązaniem OneWayToSource nie wyzwala
- 25. signal.alarm nie wyzwala wyjątku na czas
- 26. Angular 2 obserwowalna subskrypcja nie wyzwala
- 27. OnTouch w MapView uruchamia się tylko po raz pierwszy
- 28. AngularFire nie aktualizuje Firebase czasami
- 29. Nie rozpoznano Androida USB Czasami
- 30. Zmiana .prop jQuery nie powoduje .change zdarzenie
Dzięki za radę, która się przyda, jestem pewien. Ale nie jestem pewien, że to mój problem, ponieważ występuje bez względu na to, gdzie dotknę ekranu. Korzystając z debuggera, widzę, że zdarzenia wznoszenia i opuszczania wskaźnika są zawsze opóźnione i występują po zdarzeniu przenoszenia (a zdarzenie przenoszenia zawsze ma tylko jeden wskaźnik w tym przypadku). Próbowałem nawet aplikacji "Dotty" i widziałem w niej to samo zachowanie. Czy to może być problem ze sprzętem? Mam Evo w/custom ROM. Dzięki. – JStew