Разница между фокусируемым и focusableInTouchMode?

Я хочу знать реальную разницу между ними … Когда каждый из них должен использоваться, как каждый должен использоваться, и в каких ситуациях каждый из них полезен?

Приведите несколько примеров и подробно объясните их.

Solutions Collecting From Web of "Разница между фокусируемым и focusableInTouchMode?"

Это объясняется в блоге разработчиков Android: http://android-developers.blogspot.co.at/2008/12/touch-mode.html

Следующие цитаты должны прояснить:

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

В режиме касания нет фокуса и выбора. Любой выбранный элемент в списке в сетке становится не выбранным, как только пользователь переходит в режим касания. Аналогичным образом, любые сфокусированные виджеты становятся несфокусированными, когда пользователь вводит сенсорный режим.

Теперь, когда вы знаете, что фокус не существует в сенсорном режиме, я должен объяснить, что это не совсем так. Фокус может существовать в сенсорном режиме, но особым образом мы называем фокусируемым в сенсорном режиме. Этот специальный режим был создан для виджетов, которые получают ввод текста, например EditText, или, если включена фильтрация, ListView.

Фокусирующийся в касании режим – это свойство, которое вы можете установить либо из кода, либо из XML. Тем не менее, его следует использовать экономно и только в очень специфических ситуациях, так как он нарушает согласованность с обычным поведением Android. Игра является хорошим примером приложения, которое может эффективно использовать свойство фокусируемого в касании. MapView, если он используется в полноэкранном режиме, как в Картах Google, является еще одним хорошим примером того, где вы можете правильно использовать режим фокусировки в касании.

Приведите пример и подробно объясните их

Я дам вам свой опыт:

У меня было приложение Google TV, у которого была активность с большим количеством ImageButtons.

Я хотел, чтобы ImageButtons можно было выбрать.

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

Все, что мне нужно было сделать, это установить обычный onClickListener для ImageButtons и voila!

Я не проверял свое приложение на телефоне, но, думаю, это принесет знакомый результат.

РЕДАКТИРОВАТЬ

Когда?

Я сказал вам пример использования, который я тестировал: когда вы хотите, чтобы кнопка onClickListener вашей кнопки onClickListener действие при втором щелчке, после того, как вы сначала нажали и выбрали Button .

Я использовал первый щелчок, чтобы получить «фокус» и отобразить анимацию Zoom-In scale Up на моей кнопке.

Как?

Просто установите для свойства кнопки focusableInTouchMode значение true в вашем файле макета XML.

Focused – это состояние для просмотра, и в основном фокус может быть изменен с помощью трекбола и dpad. При сфокусированном состоянии ваше представление может иметь другой фон.

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

С помощью Button или любого компонента, используемого для кликов, вы должны сосредоточиться на нажатом состоянии.

Пользователи могут взаимодействовать со своими устройствами с помощью аппаратных клавиш или кнопок или прикосновением к экрану. Прикосновение к экрану переключает устройство в режим касания. Затем пользователь может взаимодействовать с ним, коснувшись экранных виртуальных кнопок, изображений и т. Д.

Чтобы проверить, находится ли устройство в касании, вызовите метод isInTouchMode () класса View .