Все согласны с тем, что приложение должно быть простым в использовании, интуитивно понятным и удобным для пользователя, но достаточно ли этого? Мы часто забываем о том, что важной частью разработки приложений является обеспечение доступности и простоты навигации вашего приложения для всех, даже для людей с нарушениями зрения или физического характера.
Android предлагает множество опций и возможностей специальных возможностей, но ими часто пренебрегают на этапе проектирования и реализации. API специальных возможностей были впервые представлены в Android 1.6 (уровень API 4), но многие разработчики не знакомы или не заинтересованы в них. Доступность часто запаздывала, и если вы выполняете быстрый поиск в Google или StackOverflow, там мало упоминаний.
Так не должно быть, потому что реализовать функции доступности в вашем приложении легко и просто, поэтому сегодня мы рассмотрим, как это сделать.
Добавление текстового описания к элементам пользовательского интерфейса
Каждый хороший дизайнер знает, что хорошо разработанный интерфейс должен быть понятен и интуитивно понятен без необходимости инструкций. Но это не всегда так. Пользователям с физическими недостатками нужны звуковые подсказки и / или визуальные подсказки для навигации даже по простейшим интерфейсам, и именно здесь используются описания контента .
Описания контента — это самая легкая в использовании функция доступности и одна из самых полезных. Они похожи на комментарии в вашем коде. Google рекомендует использовать описания в основном для элементов ImageView
ImageButton
CheckBox
Описания добавляются двумя способами: с помощью макета XML или традиционных методов Java.
Используя XML, вы добавляете описание к изображению, как это (обратите внимание на последнюю строку):
<ImageView
android:id="@+id/new_image"
...
android:contentdescription="@string/image_desc"
/>
@string
strings.xml следующим образом:
<string name="image_desc">Simple description of what the image represents</string>
Для полей EditText
android:hint = "Name Field"
Если ваши элементы интерфейса меняют состояние, например, переключатели или флажки, вы должны убедиться, что contentDescription
В этом случае используйте метод setContentDescription()
label.setContentDescription("Toggle is set to: " + (ToggleButton).isChecked())
Как уже упоминалось, не добавляйте описание, если в этом нет необходимости, потому что вы можете раздражать пользователей. Если вы чувствуете, что элемент говорит само за себя и не имеет никакой реальной функции, например значок приложения, используйте:
android:contentdescription="@null"
Навигация без использования сенсорного экрана
Также известная как навигация по фокусам, это позволяет пользователям использовать ваше приложение без сенсорного экрана, но с использованием направленных контроллеров. К ним относятся D-планшеты, трекболы, жесты, клавиши со стрелками или их глаза на некоторых современных смартфонах. Важно, чтобы ваше приложение поддерживало эти разные механизмы навигации.
Убедитесь, что каждый элемент ввода можно сфокусировать и щелкнуть с помощью кнопок со стрелками. Не забудьте визуально указать элемент, на котором фокусируется пользователь, выделив его. У каждого элемента управления в Android эта функция включена по умолчанию, но если вы создали свои собственные элементы, сделайте их фокусируемыми, используя метод setFocusable(true)
android:focusable
<EditText
...
android:focusable = "true"
/>
В Android есть алгоритмы поиска ближайшего фокусируемого элемента, поэтому пользователи могут интуитивно ориентироваться в интерфейсе с помощью контроллера направления. Если вы хотите переопределить эту функцию, используйте атрибуты XML ниже:
android:nextFocusDown,
android:nextFocusLeft,
android:nextFocusRight,
android:nextFocusUp
Они говорят сами за себя, но следующий пример кода демонстрирует их использование:
<EditText
android:id = "@+id/upper_text_field"
…
...
android:nextFocusDown = "@+id/lower_text_field"
/>
<EditText
android:id = "@+id/lower_text_field"
…
...
android:nextFocusUp = "@+id/upper_text_field
/>
Создание собственной службы специальных возможностей
Служба специальных возможностей связывается с пользователем от имени приложения и обеспечивает навигационную обратную связь, такую как тактильная обратная связь, преобразование текста в речь и визуальные подсказки. Android по умолчанию предоставляет такие услуги, как TalkBack и Explore на ощупь. Они помогают пользователям, которые не могут нормально взаимодействовать с устройством из-за физических недостатков или в особых ситуациях, таких как вождение, тренировка и т. Д.
Вы можете создавать свои собственные службы специальных возможностей как часть основного приложения и связывать их вместе или как отдельное приложение. Для получения дополнительной информации по этой теме прочитайте официальную документацию .
Тестирование доступности
Тестирование так же важно, как и его реализация, поэтому обязательно проверяйте свои приложения после реализации любых специальных возможностей. Это можно сделать, включив TalkBack и Explore одним касанием и пытаясь перемещаться по приложению, используя только звуковую обратную связь и средства управления направлением. Убедитесь, что каждый элемент управления обеспечивает необходимую обратную связь и что звуковые подсказки не повторяются и дольше, чем необходимо. Кроме того, руководящие принципы Android Design предполагают, что каждый фокусируемый элемент должен иметь длину и ширину не менее 48 dp.
Для поддержки пользователей с нарушениями слуха сопровождайте звуковую обратную связь второстепенным механизмом, таким как тактильная обратная связь или визуальные подсказки, такие как всплывающие окна и уведомления. Если ваше приложение обеспечивает воспроизведение видео, предложите поддержку субтитров или субтитров.
Вывод
Мы узнали, почему доступность должна быть важной частью графика разработки и как внедрять различные функции в приложение для Android. Каждый разработчик должен сосредоточиться на том, чтобы сделать свои приложения доступными для всех, независимо от того, как они взаимодействуют с устройством.
Я хочу услышать от вас. Используете ли вы какие-либо из этих функций в своих приложениях? Вы часто проверяете свои приложения на доступность? Позвольте мне знать в комментариях ниже.