Chcę uchwycić kierunek ruchu palca na telefonie z systemem Android. Jeśli użytkownik przesunie palec w górę/dół/lewo/prawo, chcę uchwycić ten kierunek. Jak mogę to znaleźć? Dzięki.Jak uchwycić kierunek ruchu palca w telefonie z Androidem?
Odpowiedz
Wdrożenie onTouchEvent() i obliczyć dx i dy przy którym użytkownik naciska i podnosi. Możesz użyć tych wartości, aby określić kierunek ruchu.
float x1, x2, y1, y2, dx, dy;
String direction;
switch(event.getAction()) {
case(MotionEvent.ACTION_DOWN):
x1 = event.getX();
y1 = event.getY();
break;
case(MotionEvent.ACTION_UP): {
x2 = event.getX();
y2 = event.getY();
dx = x2-x1;
dy = y2-y1;
// Use dx and dy to determine the direction of the move
if(Math.abs(dx) > Math.abs(dy)) {
if(dx>0)
direction = "right";
else
direction = "left";
} else {
if(dy>0)
direction = "down";
else
direction = "up";
}
}
}
Najlepiej będzie poradzić sobie z MotionEvent, który otrzymujesz z wywołania View.OnTouchListener(). Zdarzenia związane z ruchem śledzą bieżącą interakcję z widokiem według właściwości działania.
Wyobrażam sobie, że można obliczyć, w którym kierunku ktoś przesuwa palec, badając właściwość akcji MotionEvents i wartości x/y miejsca zdarzenia ruchu.
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
oldX= event.getX();
oldY= event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newX = motionEvent.getX();
int newY = motionEvent.getY();
int deltaX = oldX - newX;
int deltaY = oldY - newY;
if(Math.abs(deltaY)>Math.abs(deltaX))
//Motion in Y direction.
else
// Motion in X direction.
break;
}
Istnieje wiele innych metod dostępnych w obiekcie MotionEvent do użytku, a także: http://developer.android.com/reference/android/view/MotionEvent.html
dno powinno być 'check if (Math.abs (deltaY)> Math.abs (deltaX))' – tibbi
@tibbi stałe, dzięki! –
- 1. jak wykrywać kierunek ruchu machnięcia?
- 2. Jak zmienić wskaźnik myszy na wskaźnik palca w ruchu?
- 3. Jak dodać hiperłącze w wiadomości sms w telefonie z Androidem?
- 4. Skompiluj kod C na telefonie z Androidem
- 5. Synchronizacja Gmaila na telefonie z Androidem
- 6. iPhone rozpoznaje różne kształty za pomocą ruchu palca
- 7. wykrywanie ruchu palca za pomocą Microsoft Kinect wC#
- 8. Jak zainstalować aplikację na telefonie z Androidem, używając Android Studio?
- 9. Jak wyciszyć dźwięk migawki aparatu na telefonie z Androidem
- 10. jak zrobić serwer RTSP na telefonie z Androidem?
- 11. Jak określić kierunek obrotu w przejściach CSS3?
- 12. Czy rozwój na moim telefonie z Androidem może spowodować problemy?
- 13. Nie można uruchomić "adb root" na zrootowanym telefonie z Androidem
- 14. Jak obliczyć średni kierunek dwóch wektorów
- 15. Uruchamianie aplikacji Python na prawdziwym telefonie z Androidem
- 16. UITouch dotyka ukośnego kierunku palca i prędkości
- 17. Jak mogę uchwycić, który kierunek jest przesuwany za pomocą narzędzia UIPanGestureRecognizer?
- 18. PHP: Jak uchwycić limit czasu na dio_read()?
- 19. Jak poprawnie uchwycić wyjątki RuntimeException z Executorów?
- 20. Jak wyłączyć funkcję przeciągania z Androidem?
- 21. Jak wyłączyć próg ruchu podczas pobierania dotyku?
- 22. Jak uzyskać kierunek kompasu
- 23. iOS UICollectionView wykryj kierunek przewijania
- 24. Jak zatrzymać automatyczne wpisywanie wielkich liter w polu tekstowym HTML na telefonie z Androidem/Samsung?
- 25. Jak poznać numer kierunkowy lokalizacji i identyfikator komórki w telefonie z Androidem
- 26. Jak mogę znaleźć folder zdjęć z aparatu na telefonie z Androidem?
- 27. Jak uchwycić RCurl wyjście opisowy
- 28. Wykrywanie ruchu iOS: Poziomy czułości wykrywania ruchu
- 29. Kierunek obrotu w animacji CSS \ Transformacja
- 30. Podany przez ciebie odcisk palca podpisu jest już używany przez innego klienta OAuth2 z Androidem.
Dobra odpowiedź, ale znalazłem kilka literówek i musiałem przenieść niektóre z tych zmiennych do wyższego zakresu, aby można je było zmieniać z poziomu przełącznika. –
W przypadku drugiego przypadku przełącznika użyłem ACTION_MOVE zamiast ACTION_UP, ponieważ w widokach ViewPager można wywoływać bez ACTION_UP. Mam ScrollView z orientacją pionową przechowywaną przez ViewGroup i jest to strona ViewPager. Swipe na ScrollView zmienia stronę zamiast nie odpowiadać. case MotionEvent.ACTION_MOVE: float dx = event.getX() - x1; float dy = event.getY() - y1; if (Math.abs (dx) <= Math.abs (dy)) {// pionowy scroll v.getParent(). RequestDisallowInterceptTouchEvent (true); } else {v.getParent(). RequestDisallowInterceptTouchEvent (false);} break; –
ScrollView z orientacją pionową zagnieżdżoną w innym ScrollView, przechowywanym przez grupę ViewGroup, którą miałem na myśli. –