Różnica między trybem ogniskowania a trybem ustawiania ostrości InTouchMode?

83

Chcę poznać rzeczywistą różnicę między nimi ... Kiedy należy używać każdego z nich, w jaki sposób i w jakich sytuacjach są one pomocne?

Podaj przykłady i szczegółowo je wyjaśnij.

AndroidGeek
źródło
android-developers.blogspot.fi/2008/12/touch-mode.html Tutaj Romain mówi, że należy unikać używania focusableInTouchMode, chyba że tworzysz grę
Niko
2
if focusable = false - nie możesz skupić się na tym widoku, nawet EditText, jeśli naciśniesz przycisk Next na klawiaturze.
Volodymyr Kulyk

Odpowiedzi:

77

Jest to wyjaśnione na blogu programistów Androida: http://android-developers.blogspot.co.at/2008/12/touch-mode.html

Poniższe cytaty powinny to wyjaśnić:

Sam tryb dotykowy jest bardzo łatwy do zrozumienia, ponieważ po prostu wskazuje, czy ostatnia interakcja użytkownika została wykonana z ekranem dotykowym. Na przykład, jeśli używasz telefonu G1, wybranie widżetu za pomocą trackballa spowoduje wyjście z trybu dotykowego;

...

W trybie dotykowym nie ma ostrości ani wyboru. Każdy wybrany element na liście lub w siatce staje się odznaczony, gdy tylko użytkownik przejdzie w tryb dotykowy. Podobnie, wszystkie widżety, na których skupiono się, tracą ostrość, gdy użytkownik przechodzi w tryb dotykowy.

...

Teraz, gdy wiesz, że fokus nie istnieje w trybie dotykowym, muszę wyjaśnić, że nie jest to do końca prawda. Fokus może istnieć w trybie dotykowym, ale w bardzo szczególny sposób nazywamy fokusem w trybie dotykowym. Ten specjalny tryb został utworzony dla widżetów, które odbierają tekst, takich jak EditText lub, gdy filtrowanie jest włączone, ListView.

...

Aktywowana w trybie dotykowym to właściwość, którą można ustawić samodzielnie za pomocą kodu lub XML. Należy go jednak używać oszczędnie i tylko w bardzo specyficznych sytuacjach, ponieważ narusza spójność z normalnym zachowaniem Androida. Gra jest dobrym przykładem aplikacji, która może dobrze wykorzystać właściwość, którą można ustawić w trybie dotykowym. MapView, jeśli jest używany w trybie pełnoekranowym, tak jak w Mapach Google, jest kolejnym dobrym przykładem tego, gdzie można poprawnie używać ustawiania ostrości w trybie dotykowym.

Apfelsaft
źródło
5
Dobra odpowiedź we właściwym stylu SO. Dzięki
Joop
11

Podaj przykład i szczegółowo je wyjaśnij

Dam ci własne doświadczenie:

Miałem aplikację Google TV, która miała aktywność z dużą liczbą ImageButtons.

Chciałem, aby przyciski ImageButtons były dostępne.

Więc jeśli ktoś kliknie je myszą lub pilotem, zostaną one wybrane (w moim przypadku podświetlone). Następnie, jeśli użytkownik naciśnie wybrany ImageButton, akcja zostaje wyzwolona. To dokładne zachowanie osiągnięto poprzez włączenie focusableInTouchModewłaściwości za pomocą układu XML.

Wszystko, co musiałem zrobić, to ustawić zwykłe onClickListenerprzyciski ImageButtons i voila!

Nie sprawdzałem swojej aplikacji na słuchawce, ale myślę, że przyniosłaby znajomy wynik.

EDYTOWAĆ

Gdy?

Powiedziałem Ci przypadek użycia, który przetestowałem: Kiedy chcesz, aby Twój Button onClickListenerwyzwalał akcję przy drugim kliknięciu, po pierwszym kliknięciu i wybraniu Button.

Użyłem pierwszego kliknięcia, aby uzyskać „fokus” i wyświetlić animację powiększania powiększenia na moim przycisku.

W jaki sposób?

Wystarczy ustawić własność Buttona focusableInTouchModesię truew pliku XML szablonu.

Behnam
źródło
kiedy ich używać. jak one są pomocne
AndroidGeek
7

Skupiony to stan widoku i ogólnie fokus można zmienić za pomocą trackballa i manipulatora. Twój widok może mieć inne tło, gdy koncentruje się na stanie.

Możliwość ustawiania ostrości w trybie dotykowym umożliwia skupienie się na widoku, gdy użytkownik dotyka widoku, dobrym przykładem jest tego rodzaju element EditText.

Z Buttonlub jakikolwiek klikalny komponent jest zwykle tym, co Cię interesuje.

Niko
źródło
„W przypadku przycisku lub dowolnego klikalnego komponentu należy skupić się na stanie wciśnięcia”. co? reszta odpowiedzi +1
ataulm
3

Użytkownicy mogą wchodzić w interakcję ze swoimi urządzeniami za pomocą klawiszy lub przycisków sprzętowych lub dotykając ekranu. Dotknięcie ekranu przełącza urządzenie w tryb dotykowy. Użytkownik może następnie wchodzić z nim w interakcję, dotykając wirtualnych przycisków na ekranie, obrazów itp.

Aby sprawdzić, czy urządzenie jest w trybie dotykowym, wywołaj metodę isInTouchMode () klasy View .

M_ Fa
źródło