2012-01-05 23 views
5

Rozumiem różnice między identyfikatorem i indeksem, w których wydaje się, że identyfikator jest spójny dla różnych zdarzeń, a indeks może się różnić.Android Multitouch - Określ, który palec został podniesiony?

Nadal jednak zmieniam identyfikatory i szukam zrozumienia w tej dziedzinie. Czytałem wszystkie oficjalne dokumenty na Androida i liczne blogi, ale nie wydaje się, aby była to zwięzła odpowiedź.

Jeśli umieściłem trzy palce na ekranie, będą to identyfikatory 0, 1 i 2. Te identyfikatory będą stałe dla tych trzech punktów, o ile te palce są na ekranie. Poprawny?

Po podniesieniu palca, powiedz drugi palec, śledzone punkty pozostają takie same. Nadal istnieje punkt na X0, Y0 i X1, Y1, ale ID są teraz 0 i 1. Mimo że punkt z identyfikatorem numer 1 został podniesiony.

Czy istnieje sposób na podniesienie palca # 2 i śledzenie punktów za pomocą ID 0 i ID 2?

Rozumiem, że należy to zrobić ręcznie, a wartości identyfikacyjne pozostaną w tej samej kolejności, w której drugi palec zawsze ma wyższy identyfikator niż pierwszy, ale może nie mieć tej samej wartości po usunięciu palców.

Odpowiedz

0

Dokumentacja mówi "Kolejność, w jakiej pojedyncze wskaźniki pojawiają się w ruchu, jest niezdefiniowana.". Więc jeśli dotkniesz palcem pierwszym, drugim i trzecim, mogą one pojawić się w kolejności 0: [pierwsza] 1: [trzecia] 2; [druga].

Następnie można podnieść drugi palec, a następnym zdarzeniem ruchu może być 0: [trzecie] 1: [pierwsze]. Przynajmniej to jest moje zrozumienie z czytania dokumentów, ale mogę się mylić.

0

Dużym problemem jest to, jak powiedział Theblacknight, że zachowanie jest niezdefiniowane. Na wszystkich urządzeniach z Androidem 3.0 i nowszych, które testowałem do tej pory, działa to dokładnie tak, jak można się było spodziewać, identyfikatory i indeksy się nie zmieniają, wszystko działa dobrze.

Ale na Androidzie < 3.0, to zależy od telefonu najwyraźniej. Mój Droid2 zachowuje się jak twój problem, ale G2 mojego przyjaciela działa poprawnie.

Próbowałem opracować najlepszy sposób, aby sobie z tym poradzić, ale nie masz jeszcze dobrego rozwiązania. Jeśli byłby spójny i po prostu zamienił identyfikatory punktów raz, mógłbym je zaakceptować, ale jeśli przytrzymasz drugi punkt i dotykasz pierwszego i drugiego, dwa punkty wymieniają się identyfikatorami i indeksami za każdym razem. To bardzo frustrujące.

Powiązane problemy