Общая информация
Если у пользователя включена программа TalkBack для чтения с экрана, то навигация в приложениях может осуществляться двумя способами.
- Аудиоподсказки. Если выбран этот способ, то пользователю нужно медленно проводить по экрану и система будет озвучивать все элементы, которых он касается.
- Линейная навигация. В этом случае для перехода от одного элемента к другому нужно проводить пальцем вправо или влево.
Во всех приложениях для Android поддерживаются оба способа. Если выбрана линейная навигация, то порядок обхода в целом должен соответствовать визуальному расположению элементов. Главное – сделайте так, чтобы он был понятен для пользователей.
По умолчанию в TalkBack при линейной навигации порядок обхода определяется на основе иерархии представления данных.
Реализация
Если иерархия представления данных не отражает логическую структуру приложения, чтобы изменить порядок обхода, можно применить свойство android:accessibilityTraversalBefore
или android:accessibilityTraversalAfter
. В этом случае программа чтения будет переходить к областям в заданном вами порядке. Если к каким-то элементам эти свойства не применены, то обход будет осуществляться в порядке, установленном программой чтения.
Порядок обхода при использовании службы специальных возможностей отличается от принципа фокуса ввода, который применяется, если подключена внешняя клавиатура. Навигация при помощи клавиатуры определяется свойствами android:nextFocusDown
, android:nextFocusLeft
, android:nextFocusRight
и android:nextFocusUp
.
Если вы решили применить свойства accessibilityTraversalBefore
и accessibilityTraversalAfter
, то следуйте нашим рекомендациям.
- Используйте эти свойства, только если логическая последовательность отличается от последовательности в иерархии представления данных.
- Все элементы, на которые можно установить фокус ввода при использовании аудиоподсказок, должны также иметь это свойство и при линейной навигации.
- Порядок обхода должен быть соотнесен с линейной навигацией, независимо от направления движения. Например, если использован жест для перехода к следующему элементу, а затем сразу же жест для перехода к предыдущему, фокус должен сохраниться на изначальном элементе.
- Не используйте циклическое переключение, если применяете свойства
accessibilityTraversalBefore
иaccessibilityTraversalAfter
. В противном случае некоторые элементы при линейной навигации могут стать недоступны.
Дизайн
При разработке дизайна решите, в какой последовательности будет осуществляться навигация по элементам. Постарайтесь сделать так, чтобы порядок обхода совпадал с визуальным представлением данных. Если это невозможно, настройте порядок обхода в соответствии с логической структурой интерфейса.
Советы о том, как упростить навигацию в приложении, приведены здесь.
Тестирование
Вот как протестировать порядок обхода при использовании службы специальных возможностей:
- Включите TalkBack.
- Запустите приложение.
- С помощью жестов последовательно выделяйте элементы на экране.
- Убедитесь, что фокус переключается в логическом порядке и программа правильно озвучивает названия элементов.
- Убедитесь, что фокус перемещается последовательно, независимо от направления движения.
Также вы можете проверить порядок обхода с помощью специальных инструментов для Android. Чтобы проверить приложение на устройстве вручную, воспользуйтесь Сканером доступности. Для автоматического тестирования включите проверку доступности в Espresso и Robolectric.