Специальные возможности в Android: советы разработчиков и руководство по внедрению
Опубликовано: 2022-09-12Во всем мире насчитывается около 285 миллионов человек с нарушениями зрения. Таким образом, при разработке нового приложения или обдумывании изменения дизайна, безусловно, хорошей идеей будет адаптировать ваше приложение к потребностям этой широкой группы пользователей. Настройка приложений для людей с нарушениями зрения повышает удобство работы всех ваших пользователей. Каковы другие причины рассмотреть вопрос об улучшении доступности вашего приложения и как это сделать? Пожалуйста, найдите все ответы ниже!
Как слабовидящие люди используют приложения?
Программа чтения с экрана — это инструмент для запуска приложений (или просто просмотра экрана смартфона) для слепых и слабовидящих людей. Самая популярная программа для чтения с экрана для Android — TalkBack . С помощью этого инструмента пользователь выполняет ввод с помощью жестов, таких как смахивание или перетаскивание.
Обычно результатом является устная обратная связь. В TalkBack у нас есть два режима ввода жестов:
- Сенсорное исследование , когда вы проводите пальцем по экрану.
- Линейная навигация , когда вы проводите пальцем влево и вправо, пока не найдете интересующий элемент.
Как только вы доберетесь до интересующего вас элемента, вы можете дважды нажать на него, чтобы активировать его. Хотите узнать больше о том, как запустить TalkBack? Пожалуйста, прочитайте следующую статью.

Принципы доступности приложений
Чтобы люди с нарушениями зрения могли использовать наше приложение, нам сначала нужно понять принципы, которым мы должны следовать при его разработке. Поэтому, прежде чем мы перейдем к разделу реализации, давайте обсудим самые важные предположения.
Макет и типографика
Визуальная часть приложения имеет решающее значение. Правильно реализованные кнопки и обработка текста — один из важнейших факторов, делающих приложение доступным.
Сенсорные цели
Сенсорные мишени — это части экрана, которые реагируют на действия пользователя. Основная рекомендация — создавать сенсорные цели с разрешением не менее 48dp x 48dp. Подробнее об этом вы прочтете в следующей главе.

Цвет и контраст
Всемирная паутина создала рекомендации по доступности цветового контраста , чтобы помочь пользователям с нехваткой цвета. Согласно документации, критическими аспектами доступности цветового контраста являются:
- Соотношение : текст и интерактивные элементы должны иметь коэффициент цветовой контрастности не менее 4,5:1.
- Цвет как индикатор : цвет не должен быть единственным индикатором для интерактивных элементов. Было бы лучше, если бы вы также подчеркивали ссылки при наведении или отмечали обязательные поля звездочкой.
- Цветовая слепота: наиболее распространена слепота на красный/зеленый цвета. Следовательно, вам следует избегать зеленого на красном или красного на зеленом. По той же причине не используйте красный и зеленый цвета для обозначения «плохих» и «хороших» индикаторов.
Типография
Пользователи могут увеличить размер шрифта, чтобы улучшить читаемость . На устройствах Android это часто используемый системный параметр, поэтому убедитесь, что на нем достаточно места для больших и иностранных шрифтов.
Текст доступности
Текст специальных возможностей — это как видимый текст (например, метки элементов пользовательского интерфейса, текст на кнопках, ссылках и формах), так и невидимые описания (описания контента, которые могут предоставить дополнительную информацию об описываемом компоненте).
Каковы наиболее распространенные варианты использования текста специальных возможностей ?
Типы и состояния элементов управления
Средства чтения с экрана, такие как TalkBack, могут автоматически объявлять тип или состояние элемента управления, произнося имя элемента управления или издавая звук.
Обозначение элементов действием
Глаголы действия указывают, что делает элемент или ссылка, когда вы нажимаете на них, и описывают, что делает представление.
Элементы с изменением состояния
В случае значков, которые переключаются между значениями или состояниями, средство чтения с экрана описывает значок в соответствии с тем, как он представлен пользователю. Дополнительные примеры см. в руководстве по материальному дизайну.
Резюме
В этой главе вы узнали, как адаптировать дизайн для слабовидящих и слепых людей. До сих пор мы рассмотрели макет, типографику и доступность текста . Теперь перейдем к принципам их реализации.
Реализация доступности
В следующем разделе я сосредоточусь на ключевых аспектах реализации доступности для вашего приложения. Давайте начнем!
Макет — коснитесь цели
Как я упоминал в теоретической части, каждый кликабельный элемент должен иметь как минимум 48dp/48dp.
Есть несколько вариантов сделать это. Ты мог:
- Определите значения атрибутов ширины и высоты в соответствии с рекомендациями (48dp/48dp).
- Добавьте отступы вокруг значков
- Укажите значения атрибутов: MinWidth и/или minHeight.
- Зарегистрируйте TouchDelegate.
Посмотрите на пример из официальной документации Google. Он показывает элемент, который имеет рекомендуемый размер сенсорной цели :
<кнопка изображения ... андроид: minWidth = "40dp" андроид: minHeight = "32dp" андроид: paddingLeft="4dp" Android: paddingTop = "8dp" андроид: paddingRight="4dp" Android: paddingBottom="8dp" />
Текст доступности
Один из способов прикрепить текст специальных возможностей к элементам пользовательского интерфейса — использовать атрибут Android под названием ContentDescription . Если вы не предоставите его, например, для кнопки с изображением, пользователь TalkBack может столкнуться с неприятностями.
Посмотрите на пример:
<!-- Значением следующей строки является "Поиск". --> <Просмотр изображения ... android:contentDescription="@string/search" />
Для декоративных элементов, таких как прокладки и разделители, установите для атрибута “android:contentDescription”
значение "null"
. Если ваше приложение поддерживает только устройства под управлением Android 4.1 (уровень API 16) или более поздней версии, вы можете вместо этого установить для атрибута “android:importantForAccessibility”
"no"
.
Пожалуйста, не указывайте тип или состояние элемента управления в описании контента. В Android изначально есть такие слова, как кнопки, выбранные, проверенные и т. д.

Методы маркировки
Ниже вы можете найти набор рекомендаций по описанию компонентов пользовательского интерфейса в вашем приложении.
Компоненты, которые описывают друг друга
Если у вас есть компонент, который позволяет вам предоставлять некоторые данные (например, EditText), хорошо иметь объект View , который его описывает (например, TextView). Вот почему был создан атрибут "android:labelFor"
. Пожалуйста, взгляните на пример:
<!-- Текст метки будет "Имя:" --> <текстовый вид ... андроид: android:labelFor="@+id/nameEntry" андроид:текст="@строка/имя" /> <!-- Текст специальных возможностей будет "Редактировать текст для имени" --> <Редактировать текст ... андроид: /> <!-- Текст метки будет "Фамилия:" --> <текстовый вид ... андроид: android:labelFor="@+id/surnameEntry" андроид:текст="@строка/фамилия" /> <!-- Текст доступности будет "Редактировать текст для фамилии" --> <Редактировать текст ... андроид: />
Коллекция связанных элементов
Если в вашем приложении есть элементы пользовательского интерфейса, которые естественным образом связаны (например, поля с информацией о книге), вы можете организовать их в группы с помощью фокусируемого контейнера . Для этого установите для атрибута объекта-контейнера “android:focusable”
значение true.
При этом TalkBack может отображать описания содержимого внутренних элементов одно за другим в одном объявлении. Группировка контента сокращает количество пролистываний, которые приходится выполнять пользователю, и оптимизирует вывод речи. Пожалуйста, посмотрите на пример:
<линейный макет ... андроид: андроид: ориентация = "вертикальный" андроид: фокусируемый = "истина"> <текстовый вид ... андроид: андроид:текст="@строка/название"/> <текстовый вид ... андроид: андроид:текст="@строка/автор"/> <текстовый вид ... андроид: андроид:текст="@строка/страницы"/> </Линейный макет>
Конечно, если в вашем контейнере есть вложенные представления, вы также можете применить это решение к ним. Это сделает навигацию по вашему приложению еще более доступной.
Действия со специальными возможностями
Если ваше приложение поддерживает такие действия, как щелчок, длительное нажатие или смахивание , вам необходимо настроить эти действия для людей с нарушениями зрения. На этом мы и сосредоточимся в этой части статьи.
Посмотрите, как вы можете это реализовать:
ViewCompat.addAccessibilityAction( // Просмотр для добавления действия доступности элементВид, // Метка, которую считывает служба специальных возможностей getString(R.string.save) ) { _, _ -> // Команда специальных возможностей сохранитьЭлемент() истинный }
Это приводит к тому, что TalkBack объявляет «Дважды нажмите, чтобы заархивировать» .
После реализации действия доступности пользователи теперь могут получить доступ к действию через меню действий. О навигации в этом меню я расскажу чуть позже. Пожалуйста, помните: важно, чтобы пользователи могли эффективно выполнять все процессы в вашем приложении.
Виджеты
Этот раздел короткий, но очень важный. Когда вы создаете свой компонент пользовательского интерфейса, используйте или расширяйте системные виджеты, которые находятся как можно ниже в иерархии классов Android. Предоставленные системой виджеты далеко внизу иерархии уже обладают большинством специальных возможностей, необходимых вашему приложению. К основным относятся:
- Действия со специальными возможностями
- Характеристики
- Государственная информация.
Благодаря этому вам не нужно будет писать полную поддержку специальных возможностей для компонента с нуля, и вы снизите риск ошибки.
Навигация
TalkBack продолжает расти. Не так давно мы использовали два контекстных меню (глобальное и локальное) для навигации по системе нашего смартфона. Теперь эти два меню стали одним.
Контекстное меню используется для двух основных целей:
- Как следует из названия, он используется для навигации. Вы можете перемещаться по словам, заголовкам, ссылкам, строкам, уникальному содержимому или другим точкам в зависимости от предпочтений или возможностей приложения.
- Вторая цель позволяет пользователю быстро изменять настройки и элементы управления TalkBack.
В этом меню вы можете найти набор действий (упомянутых в разделе « Действие специальных возможностей » выше). Как вы можете получить доступ к этому меню? Это очень просто. Вам просто нужно сделать свайп вверх и правый жест.
Тестирование доступности
В проектах, которые я разработал до сих пор, я в основном извлек пользу из трех следующих вспомогательных средств: сканер специальных возможностей, Espresso и Lint. Конечно, в вашем распоряжении гораздо больше инструментов. Я настоятельно рекомендую вам ознакомиться с ними самостоятельно. Всю необходимую документацию вы можете найти здесь.
Сканер доступности

Этот инструмент сканирует пользовательский интерфейс и предоставляет рекомендации по улучшению доступности приложений.
Сканер специальных возможностей позволяет любому, а не только разработчикам, быстро и легко определить некоторые распространенные улучшения специальных возможностей, например, маленькие сенсорные элементы, ошибки контраста текста и изображений, отсутствующие описания содержимого для немаркированных виджетов и т. д. Если вы хотите начать использовать сканер специальных возможностей или просто поиск более подробных инструкций, пожалуйста, прочитайте следующую документацию.
Линт для Android
Я уверен, что большинство из вас знают этот инструмент из своей повседневной работы. Стоит помнить, что Android Studio также предоставляет предупреждения о различных проблемах доступности и ссылки на места в исходном коде, которые содержат эти проблемы.
Эспрессо
Espresso — это тестовая библиотека для Android , которая позволяет быстро и легко протестировать пользовательский интерфейс. Он позволяет взаимодействовать с протестированными компонентами пользовательского интерфейса приложения и гарантирует выполнение определенных действий или условий. Конечно, в рамках поддержки доступности вы можете включить и настроить тестирование доступности .
Резюме
Доступность вашего приложения не просто открывает его для новых пользователей. Это помогает улучшить нашу повседневную жизнь и делает мир более инклюзивным. Я надеюсь, что эта статья помогла вам узнать о специальных возможностях. Для дальнейшего чтения, пожалуйста, не забудьте проверить официальную документацию.