Я хочу знати фактичну різницю між ними ... Коли слід використовувати кожну, як слід використовувати кожну та в яких ситуаціях корисно?
Наведіть кілька прикладів і детально поясніть їх.
Я хочу знати фактичну різницю між ними ... Коли слід використовувати кожну, як слід використовувати кожну та в яких ситуаціях корисно?
Наведіть кілька прикладів і детально поясніть їх.
Відповіді:
Це пояснюється в блозі розробників Android: http://android-developers.blogspot.co.at/2008/12/touch-mode.html
Наступні цитати повинні чітко це пояснити:
Сам по собі сенсорний режим є чимось дуже простим для розуміння, оскільки він просто вказує, чи виконувалася остання взаємодія користувача з сенсорним екраном. Наприклад, якщо ви використовуєте телефон G1, вибір віджета з трекболом виведе вас з режиму дотику;
...
У сенсорному режимі немає фокусування та вибору. Будь-який вибраний елемент у списку в сітці стає невідібраним, як тільки користувач переходить у режим дотику. Подібним чином, будь-які сфокусовані віджети стають розфокусованими, коли користувач переходить у режим дотику.
...
Тепер, коли ви знаєте, що фокус не існує в сенсорному режимі, я повинен пояснити, що це не зовсім так. Фокус може існувати в сенсорному режимі, але дуже особливим чином ми називаємо фокусування в сенсорному режимі. Цей спеціальний режим був створений для віджетів, які отримують введення тексту, таких як EditText або, якщо увімкнено фільтрування, ListView.
...
Фокусований у сенсорному режимі - це властивість, яку ви можете встановити самостійно за допомогою коду або XML. Однак його слід використовувати економно та лише в дуже конкретних ситуаціях, оскільки це порушує узгодженість із нормальною поведінкою Android. Гра є гарним прикладом програми, яка може добре використовувати властивість фокусування в сенсорному режимі. MapView, якщо він використовується в повноекранному режимі, як і в Google Maps, є ще одним хорошим прикладом того, як ви можете правильно фокусувати в сенсорному режимі.
Наведіть приклад і детально поясніть їх
Я дам вам власний досвід:
У мене був додаток Google TV, який займався великою кількістю ImageButtons.
Я хотів, щоб ImageButtons можна було вибрати.
Отже, якщо людина натискає на них за допомогою миші або пульта дистанційного керування, вони стають лише вибраними (виділено в моєму випадку). Потім, якщо користувач натискає вибране ImageButton
, дія запускається. Така точна поведінка була досягнута завдяки включенню focusableInTouchMode
властивості через макет XML.
Все, що мені потрібно було зробити, це встановити звичайний onClickListener
для ImageButtons і вуаля!
Я не перевіряв свою заявку на слухавці, але, мабуть, це дасть знайомий результат.
Коли?
Я сказав вам, що я перевірив приклад використання: коли ви хочете, щоб ваші кнопки onClickListener
викликали дію при вашому другому клацанні, після того, як ви вперше натиснули та вибрали Button
.
Я використав перший клік, щоб отримати "фокус" і відобразити анімацію збільшення вгору на моїй кнопці.
Як?
Просто встановіть властивість батона , focusableInTouchMode
щоб true
у файлі макета XML.
Фокус - це стан для перегляду, і, як правило, фокус можна змінити за допомогою трекболу та dpad. Ваш погляд може мати різний фон, коли стан сфокусований.
Фокусований в сенсорному режимі дозволяє зору отримувати фокус, коли користувач торкається виду, гарним прикладом такого типу компонента EditText
.
Зі Button
натисканням або будь-яким інтерактивним компонентом, як правило, цікавить вас.
Користувачі можуть взаємодіяти зі своїми пристроями за допомогою апаратних клавіш або кнопок або торкаючись екрана. Торкання екрана переводить пристрій у сенсорний режим. Потім користувач може взаємодіяти з ним, торкаючись екранних віртуальних кнопок, зображень тощо.
Щоб перевірити, чи пристрій перебуває в сенсорному режимі, зателефонуйте до методу isInTouchMode () класу View .