Різниця між фокусируемым і фокусируемымInTouchMode?


83

Я хочу знати фактичну різницю між ними ... Коли слід використовувати кожну, як слід використовувати кожну та в яких ситуаціях корисно?

Наведіть кілька прикладів і детально поясніть їх.



android-developers.blogspot.fi/2008/12/touch-mode.html Тут Ромен каже, що слід уникати використання focusableInTouchMode, якщо ви не розробляєте гру
Ніко,

2
якщо focusable = false - ви не можете сфокусувати цей вигляд, навіть EditText, якщо натиснути кнопку Далі на клавіатурі.
Володимир Кулик

Відповіді:


77

Це пояснюється в блозі розробників Android: http://android-developers.blogspot.co.at/2008/12/touch-mode.html

Наступні цитати повинні чітко це пояснити:

Сам по собі сенсорний режим є чимось дуже простим для розуміння, оскільки він просто вказує, чи виконувалася остання взаємодія користувача з сенсорним екраном. Наприклад, якщо ви використовуєте телефон G1, вибір віджета з трекболом виведе вас з режиму дотику;

...

У сенсорному режимі немає фокусування та вибору. Будь-який вибраний елемент у списку в сітці стає невідібраним, як тільки користувач переходить у режим дотику. Подібним чином, будь-які сфокусовані віджети стають розфокусованими, коли користувач переходить у режим дотику.

...

Тепер, коли ви знаєте, що фокус не існує в сенсорному режимі, я повинен пояснити, що це не зовсім так. Фокус може існувати в сенсорному режимі, але дуже особливим чином ми називаємо фокусування в сенсорному режимі. Цей спеціальний режим був створений для віджетів, які отримують введення тексту, таких як EditText або, якщо увімкнено фільтрування, ListView.

...

Фокусований у сенсорному режимі - це властивість, яку ви можете встановити самостійно за допомогою коду або XML. Однак його слід використовувати економно та лише в дуже конкретних ситуаціях, оскільки це порушує узгодженість із нормальною поведінкою Android. Гра є гарним прикладом програми, яка може добре використовувати властивість фокусування в сенсорному режимі. MapView, якщо він використовується в повноекранному режимі, як і в Google Maps, є ще одним хорошим прикладом того, як ви можете правильно фокусувати в сенсорному режимі.


5
Хороша відповідь у правильному стилі SO. Дякую
Джоп

11

Наведіть приклад і детально поясніть їх

Я дам вам власний досвід:

У мене був додаток Google TV, який займався великою кількістю ImageButtons.

Я хотів, щоб ImageButtons можна було вибрати.

Отже, якщо людина натискає на них за допомогою миші або пульта дистанційного керування, вони стають лише вибраними (виділено в моєму випадку). Потім, якщо користувач натискає вибране ImageButton, дія запускається. Така точна поведінка була досягнута завдяки включенню focusableInTouchModeвластивості через макет XML.

Все, що мені потрібно було зробити, це встановити звичайний onClickListenerдля ImageButtons і вуаля!

Я не перевіряв свою заявку на слухавці, але, мабуть, це дасть знайомий результат.

РЕДАГУВАТИ

Коли?

Я сказав вам, що я перевірив приклад використання: коли ви хочете, щоб ваші кнопки onClickListenerвикликали дію при вашому другому клацанні, після того, як ви вперше натиснули та вибрали Button.

Я використав перший клік, щоб отримати "фокус" і відобразити анімацію збільшення вгору на моїй кнопці.

Як?

Просто встановіть властивість батона , focusableInTouchModeщоб trueу файлі макета XML.


коли їх використовувати. чим вони корисні
AndroidGeek

7

Фокус - це стан для перегляду, і, як правило, фокус можна змінити за допомогою трекболу та dpad. Ваш погляд може мати різний фон, коли стан сфокусований.

Фокусований в сенсорному режимі дозволяє зору отримувати фокус, коли користувач торкається виду, гарним прикладом такого типу компонента EditText.

Зі Buttonнатисканням або будь-яким інтерактивним компонентом, як правило, цікавить вас.


"За допомогою кнопки або будь-якого інтерактивного компонента вам слід зосередитися на натиснутому стані." що? решта відповіді +1
ataulm

3

Користувачі можуть взаємодіяти зі своїми пристроями за допомогою апаратних клавіш або кнопок або торкаючись екрана. Торкання екрана переводить пристрій у сенсорний режим. Потім користувач може взаємодіяти з ним, торкаючись екранних віртуальних кнопок, зображень тощо.

Щоб перевірити, чи пристрій перебуває в сенсорному режимі, зателефонуйте до методу isInTouchMode () класу View .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.