Обеспечение совместимости
Содержание этого урока
- Определение альтернативных стилей
- Предоставление альтернативных макетов
- Использование вспомогательной библиотеки
- Проверка версии системы
См. также
Некоторые возможности Material Design, такие как “материальные” темы и настраиваемые переходы между операциями, доступны только в Android 5.0 (уровень API 21) и более поздних версиях. Однако приложения можно разработать таким образом, чтобы эти функции были доступны при запуске на устройствах, поддерживающих Material Design, сохранив при этом совместимость приложений с устройствами под управлением более ранних выпусков Android.
Определение альтернативных стилей
Приложение можно настроить так, чтобы тема Material Design использовалась при работе на поддерживающих эту технологию устройствах, а при запуске приложения на устройствах с более ранними версиями Android происходило переключение на старые варианты тем. Ниже описан порядок такой настройки.
- В файле
res/values/styles.xml
определите тему, наследующую более старой теме (например, Holo). - В файле
res/values-v21/styles.xml
определите тему с таким же именем, наследующую теме Material Design. - В файле манифеста укажите эту тему как тему приложения.
Примечание. Если в приложении используется тема Material Design, но отсутствует определенная описанным способом альтернативная тема, это приложение не будет запускаться на устройствах под управлением версий Android, предшествующих 5.0.
Предоставление альтернативных макетов
Если в создаваемых согласно рекомендациям Material Design макетах отсутствуют новые атрибуты XML, представленные в Android 5.0 (уровень API 21), такие макеты поддерживаются в предыдущих версиях ОС Android. В противном случае необходимо предоставить альтернативные макеты. Можно также предоставить альтернативные макеты для настройки внешнего вида приложения в более ранних версиях Android.
Создайте файлы макета для Android 5.0 (уровень API 21) в res/layout-v21/
, а также файлы альтернативного макета для более ранних версий Android (в res/layout/
). Например,res/layout/my_activity.xml
— это альтернативный макет для res/layout-v21/my_activity.xml
.
Чтобы сделать код более компактным, определите стили в res/values/
, измените стили в res/values-v21/
для новых API, а также используйте наследование стилей, определив основные стили вres/values/
и задав наследование из них в res/values-v21/
.
Использование вспомогательной библиотеки
Вспомогательные библиотеки v7 r21 и более поздних версий включают следующие функции Material Design:
- стили Material Design для некоторых системных виджетов в случае применения одной из тем
Theme.AppCompat
; - атрибуты цветовой палитры темы в темах
Theme.AppCompat
; - виджет
RecyclerView
для отображения коллекций данных; - виджет
CardView
для создания карточек; - класс
Palette
для извлечения главных цветов на изображениях.
Системные виджеты
В темах Theme.AppCompat
имеются стили Material Design для следующих виджетов:
Цветовая палитра
Чтобы получить стили Material Design и настроить цветовую палитру с помощью вспомогательной библиотеки Android v7, примените одну из следующих тем Theme.AppCompat
:
<!-- extend one of the Theme.AppCompat themes --> <style name="Theme.MyTheme" parent="Theme.AppCompat.Light"> <!-- customize the color palette --> <item name="colorPrimary">@color/material_blue_500</item> <item name="colorPrimaryDark">@color/material_blue_700</item> <item name="colorAccent">@color/material_green_A200</item> </style>
Списки и карточки
Виджеты RecyclerView
и CardView
имеются в более ранних версиях Android. Они находятся во вспомогательной библиотеке Android v7, и для них существуют следующие ограничения.
- В виджете
CardView
применяется программная реализация тени с помощью дополнительного отступа. - Виджет
CardView
не выполняет обрезку своих дочерних представлений, пересекающихся со скругленными углами.
Зависимости
Чтобы воспользоваться этими возможностями в версиях Android, предшествующих 5.0 (уровень API 21), включите в свой проект вспомогательную библиотеку Android v7 как зависимость Gradle:
dependencies { compile 'com.android.support:appcompat-v7:21.0.+' compile 'com.android.support:cardview-v7:21.0.+' compile 'com.android.support:recyclerview-v7:21.0.+' }
Проверка версии системы
Следующие функции доступны только в Android 5.0 (уровень API 21) и более поздних версиях:
- переходы;
- реакция на касание;
- анимации появления;
- анимации по траектории;
- векторные элементы;
- тонирование элементов дизайна.
Чтобы обеспечить совместимость приложения с более ранними версиями Android, проверьте системный параметр version
во время запуска, прежде чем вызвать API любой из этих функций:
// Check if we're running on Android 5.0 or higher if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Call some material design APIs here } else { // Implement this feature without material design }
Примечание. Чтобы указать версии Android, поддерживаемые вашим приложением, установите атрибуты android:minSdkVersion
и android:targetSdkVersion
в файле манифеста. Чтобы использовать функции Material Design, которые имеются в Android 5.0, задайте для атрибутаandroid:targetSdkVersion
значение 21
. Дополнительные сведения см. в руководстве по API <uses-sdk>.