Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Как кодировать экран настроек в приложении для Android

by
Difficulty:BeginnerLength:LongLanguages:

Russian (Pусский) translation by Svetlana (you can also view the original English article)

Final product image
What You'll Be Creating

Команда разработчиков материалов в Google дает четкое определение того, что должны делать настройки в вашем приложении для Android:

Настройки приложения позволяют пользователям указать, как приложение должно вести себя.

Они в Google также утверждают, что ваши пользователи должны перейти к настройкам приложения либо из боковой навигации, либо из меню панели инструментов - с помощью пункта, помеченного как «Настройки».

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

Настоятельно рекомендуется предоставить доступ к настройкам приложения. Это обеспечит лучший пользовательский опыт для ваших пользователей, что приведет к лучшему обзору в магазине Google Play, что в конечном итоге приведет к большему количеству загрузок приложений (что увеличит доход).

Я предполагаю, что вы должны были взаимодействовать с настройками приложения на вашем устройстве, например, выбрав мелодию по умолчанию или контролируя свою конфиденциальность в приложении. Почти все самые популярные приложения, которые вы загрузили или загрузите в магазине Google Play, содержат экран настроек, позволяющий контролировать поведение приложения.

Примером популярного приложения с экраном настроек является приложение Chrome Android от Google. На экране настроек этого приложения пользователи могут выбрать поисковую систему по умолчанию, изменить поведение уведомлений, контролировать конфиденциальность пользователей и т. Д. Вы можете сами убедиться в этом, загрузив приложение Chrome из магазина Google Play (если оно еще не установлено на вашем устройстве). Следующий снимок экрана взят из приложения Chrome и отображает экран настроек приложения.

Screenshot of Chrome app settings screen

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

Пример проекта (в Kotlin) для этого учебника можно найти в нашем репозитории GitHub, чтобы вы могли легко следить за ним.

Необходимые условия

Чтобы следовать этому уроку, вам понадобится:

1. Создайте проект Android Studio

Запустите Android Studio и создайте новый проект (вы можете назвать его SettingsScreenDemo) с пустым действием под названием SettingsActivity. Не забудьте также установить флажок Включить поддержку Kotlin.

Android Studio create project screen

2. Создание PreferenceFragment

Для поддержки API уровня 11 (Honeycomb) и выше мы можем использовать PreferenceFragment. Этот класс является просто фрагментом, который показывает иерархию объектов предпочтений в виде списков.

В приведенном выше коде мы создали вложенный класс SettingsFragment внутри SettingsActivity (поскольку класс SetttingsFragment очень мал). Обратите внимание, что наш класс SettingsFragment расширяет суперкласс PreferenceFragment и имеет метод addPrerenceFromResource внутри onCreate (). В этом методе мы дали ему идентификатор ресурса R.xml.preference предпочтения XML для запуска - когда загружен фрагмент. Наконец, мы размещаем фрагмент в действии, просто используя FragmentTransaction, чтобы добавить его в пользовательский интерфейс - внутри onCreate () из SettingsActivity.

3. Создание наших предпочтений

Создайте файл XML и назовите его Preferences.xml. Сохраните этот файл в каталоге res / xml вашего проекта приложения. Обратите внимание, что вы можете дать этому файлу любое имя, но настоятельно рекомендуется придерживаться общепринятого названия «предпочтения». Кроме того, у вас обычно должен быть только один такой файл в проекте приложения.

Корневой узел для файла preferences.xml должен быть элемент <PreferenceScreen>. Внутри этого корневого элемента теперь у нас есть наши индивидуальные предпочтения. Вот общие атрибуты, связанные с предпочтения:</PreferenceScreen>

  • android: key: этот атрибут используется для получения значения в объекте SharedPreferences.
  • android: title: устанавливает заголовок для предпочтения. Это жирный текст.
  • android: summary: устанавливает сводку для Предпочтения (это не обязательно). Это блеклый текст под заголовком.
  • android: defaultValue: устанавливает значение по умолчанию для предпочтения.

Мы вскоре рассмотрим все предпочтения, которые мы определили выше. Обратите внимание, что вы также можете добавить или настроить предпочтения с помощью редактора предпочтений Android Studio - аналогично редактору ресурсов макета, с которым вы уже знакомы. Вы можете либо добавить / отредактировать свой XML-файл настроек непосредственно в режиме «Текст», либо использовать интерфейс перетаскивания в режиме «Дизайн».

Android Studio preference editor

Как вы можете видеть, в этом редакторе вы можете перетаскивать любые предпочтения в разделе палитры (слева). После удаления вы должны выбрать его и изменить его атрибуты на панели атрибутов (справа) редактора. Обратите внимание, что по умолчанию нам дается несколько атрибутов для изменения. Чтобы просмотреть или изменить все атрибуты, связанные с выбранным предпочтением, обязательно щелкните ссылку «Просмотреть все атрибуты» в нижней части панели атрибутов. Это очень похоже на редактор макетов, который вы уже знаете.

Теперь давайте пройдемся по всем имеющимся у нас предпочтениям.

CheckBox предпочтения

CheckBoxPreference - это просто виджет CheckBox, который включен в экран настроек. Этот предпочтение возвращает значение «true», если установлен флажок, или «false» в противном случае. Другими словами, он возвращает логическое значение в зависимости от состояния виджета.

CheckBoxPreferense

Другие атрибуты, которые вы можете добавить в CheckBoxPreference:

  • android: summaryOff: устанавливает сводку для предпочтения на экране предпочтений, когда она не отмечена.
  • android: summaryOn: устанавливает сводку для предпочтения на экране предпочтений, когда она отмечена.
  • android: disableDependentsState: состояние (true для on или false для off), которое приводит к отключению зависимых. Может быть логическим значением, таким как «true» или «false».

Переключатель предпочтений 

SwitchPreference выполняет функции, аналогичные CheckBoxPreference. Он предоставляет возможность переключения в двух состояниях («включено» или «выключено»). При этом используется виджет «Переключатель», который позволяет пользователю скользить влево («выкл») и вправо («вкл»). Это предпочтение также включает атрибуты, описанные для CheckBoxPreference выше. Кроме того, он имеет следующие атрибуты:

  • android: switchTextOff: устанавливает текст, используемый на самом коммутаторе в выключенном состоянии.
  • android: switchTextOn: устанавливает текст, используемый на самом коммутаторе в состоянии «включено».
SwitchPreference

EditText предпочтения

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

Обратите внимание, что значение, хранящееся в SharedPreferences, является строкой.

EditTextPreference

Список предпочтений

Этот вид предпочтений будет отображать список записей в диалоговом окне при нажатии. Здесь вы можете указать пару ресурсов строкового массива в своем предпочтительном XML. Этот ресурс строкового массива просто содержит коллекцию строк. Этот ресурс находится по адресу res / values ​​/ arrays.xml.

Вот наш образец ListPreference с использованием этого ресурса.

Мы устанавливаем записи и значения записей, используя атрибуты android: records и android: entryValues ​​соответственно.

  • Android: записи: читабельный массив для представления в виде списка.
  • android: entryValues: массив для поиска значения, которое нужно сохранить для предпочтения при выборе записи из записей.
ListPreference dialog when clicked

Например, если мы используем количество минут в каждой продолжительности в качестве значений ввода, когда пользователь выбирает продолжительность времени (например, 30 минут), соответствующее целочисленное значение будет сохранено в SharedPreferences (например, 30).

Список множественного выбора предпочтения

Этот похож на ListPreference, но вместо переключателей у нас есть флажки. Другими словами, пользователь может выбрать несколько элементов в диалоговом окне. Обратите внимание, что результат сохраняется в «наборе строк» ​​в SharedPreferences. Это можно получить с помощью getStringSet ().

Рингтон предпочтения

При нажатии RingtonePreference отображается диалоговое окно со списком доступных мелодий на устройстве или эмуляторе.

  • android: showDefault: будет ли показана опция мелодии по умолчанию.
  • android: showSilent: будет ли опция Silent отображаться в списке. Пользователь может выбрать эту опцию, если он не хочет воспроизводить мелодию звонка.
RingtonePreference

Обратите внимание, что значение, сохраненное в SharedPreferences для этого предпочтения, является специальной строкой. Эта специальная строка является URI, который указывает на ContentProvider.

4. Создание, Настройка групп

Это становится проблемой, когда у вас длинный список предпочтений или настроек, потому что у пользователей могут возникнуть проблемы со сканированием или их пониманием. Чтобы решить эту проблему, мы можем сгруппировать наши предпочтения. Взгляните на скриншот Chrome app, я показал вам в начале снова — уведомления группируются предпочтения в две категории: основы и дополнительно. Это облегчает пользователю понимание предпочтений и не делает список слишком громоздким.

Давайте теперь посмотрим, насколько просто выполнить эту задачу.

Мы просто окружаем предпочтения, мы хотим, чтобы сгруппировать в <PreferenceCategory>тег и дайте каждой группе название, используя атрибут Название: андроид.</PreferenceCategory>

Preferences grouped with PreferenceCategory

5. Начало намерения

Обратите внимание, что можно открыть действие, просто щелкнув элемент предпочтения на экране настроек. Это может пригодиться, когда вы хотите открыть веб-страницу. Вот код для этого:

Здесь, мы добавили <intent>элемент внутри <Preference>элемент.</Preference> </intent>

  • android: action: устанавливает действие для Intent (это похоже на вызов setAction () для объекта Intent).
  • android: targetClass: устанавливает часть класса имени компонента (аналогично вызову setComponent () для объекта Intent).
  • android: targetPackage: устанавливает часть пакета имени компонента.
  • android: data: устанавливает данные для назначения (аналогично вызову setData () для объекта Intent).

Например, чтобы открыть веб-страницу, вы можете использовать следующее:

6. Привязка сводки предпочтений к выбранному значению

Давайте теперь посмотрим, как обновить сводку предпочтений значением, выбранным пользователем.

В этом классе мы создали вспомогательный метод с именем bindPreferenceSummaryToValue (), который находится внутри нашего сопутствующего объекта, чтобы обновить текст сводной информации о предпочтениях значением, выбранным пользователем. Мы передали ему объект Preference в качестве аргумента. FindPreference () вернет предпочтение, используя ключ предпочтения.

У нас есть переменная sBindPreferenceSummaryToValueListener, которая является экземпляром Preference.OnPreferenceChangeListener. Это просто слушатель изменения предпочтений, который поможет нам обновить сводку предпочтений до значения, выбранного пользователем. Мы проверяем наличие особых случаев, например, когда выбранным предпочтением является RingtonePreference или ListPreference. Для этих типов предпочтений мы делаем специальную обработку, чтобы получить итоговую строку. Если предпочтение не является ни одним (например, EditTextPreference), мы просто устанавливаем для сводки значение строки предпочтения.

Внутри bindPreferenceSummaryToValue () мы устанавливаем прослушиватель изменения предпочтений, вызывая onPreferenceChangeListener (в Java это вместо этого setOnPreferenceChangeListener) объекта Preference.

Теперь запустите проект еще раз, чтобы увидеть, как все это работает!

Settings screen showing changed summary in response to selection

7. Получение значений предпочтений

Чтобы начать получать значения предпочтений для экрана настроек, мы вызываем метод getDefaultSharedPreference (), который находится внутри класса PreferenceManager, - передавая ему объект Context предпочтений, значения которых требуются. Обратите внимание, что мы получаем значения из SharedPreferences по умолчанию для нашего приложения.

Вы вызываете соответствующий метод получения для типа, из которого мы хотим получить значение в SharedPreferences. Вы передаете ему ключ в качестве первого аргумента, а значением по умолчанию является второй аргумент.

8. бонус: Использование Android Studio шаблонов

Теперь, когда вы узнали об API, которые используются для создания экрана настроек с нуля в Android, я покажу вам ярлык, который сделает его быстрее в следующий раз. Вы можете использовать шаблон вместо того, чтобы кодировать экран настроек с нуля.

Android Studio предоставляет шаблоны кода, которые соответствуют рекомендациям по проектированию и разработке Android. Эти существующие шаблоны кода (доступные на Java и Kotlin) могут помочь вам быстро запустить ваш проект. Один такой шаблон можно использовать для создания экрана настроек.

Чтобы использовать эту удобную функцию для нового проекта, сначала запустите Android Studio.

Android Studios Create Android Project dialog

Введите название приложения и нажмите кнопку «Далее». Вы можете оставить настройки по умолчанию такими, как они есть в диалоговом окне «Целевые устройства Android».

Снова нажмите кнопку Далее.

Android studios Add an Activity to Mobile dialog

В диалоговом окне «Добавить действие на мобильный» прокрутите вниз и выберите «Настройки». Нажмите кнопку Далее после этого.

Android Studios Configure Activity dialog

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

Android Studio теперь помогла нам создать проект с настройкой активности. Очень круто! Вам настоятельно рекомендуется изучить сгенерированный код.

Вы также можете использовать шаблоны для уже существующего проекта Android Studio. Просто зайдите в Файл> Создать> Активность> Настройки Активность.

Navigation flow to creating a new settings activity in Android Studio

Обратите внимание, что шаблоны, поставляемые с Android Studio, хороши для простых макетов и создания базовых приложений, но если вы хотите действительно запустить свое приложение, вы можете рассмотреть некоторые из шаблонов приложений, доступных на Envato Market.

Они значительно экономят время опытных разработчиков, помогая им сократить время создания приложения с нуля и сосредоточить свои таланты вместо этого на уникальных и настраиваемых частях создания нового приложения.

Заключение

Из этого урока вы узнали, как создавать настройки приложения в Android с нуля. Мы также узнали, как легко и быстро использовать шаблоны Android Studio для создания настроек приложения.

Я настоятельно рекомендую ознакомиться с официальными рекомендациями по дизайну материалов для настроек, чтобы узнать больше о том, как правильно проектировать и использовать настройки в Android. Кроме того, ознакомьтесь с официальным руководством по API, чтобы узнать больше о других API для создания действий по настройке.

Чтобы узнать больше о кодировании для Android, ознакомьтесь с другими нашими курсами и учебными пособиями здесь, на Envato Tuts +!


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.