Урок 7. Поддержание совместимости приложений с Material Design

Содержание этого урока

  1. Определение альтернативных стилей
  2. Предоставление альтернативных макетов
  3. Использование вспомогательной библиотеки
  4. Проверка версии системы

См. также

Некоторые возможности Material Design, такие как “материальные” темы и настраиваемые переходы между операциями, доступны только в Android 5.0 (уровень API 21) и более поздних версиях. Однако приложения можно разработать таким образом, чтобы эти функции были доступны при запуске на устройствах, поддерживающих Material Design, сохранив при этом совместимость приложений с устройствами под управлением более ранних выпусков Android.

Определение альтернативных стилей


Приложение можно настроить так, чтобы тема Material Design использовалась при работе на поддерживающих эту технологию устройствах, а при запуске приложения на устройствах с более ранними версиями Android происходило переключение на старые варианты тем. Ниже описан порядок такой настройки.

  1. В файле res/values/styles.xml определите тему, наследующую более старой теме (например, Holo).
  2. В файле res/values-v21/styles.xml определите тему с таким же именем, наследующую теме Material Design.
  3. В файле манифеста укажите эту тему как тему приложения.

Примечание. Если в приложении используется тема 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:

Системные виджеты

В темах 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>.

Коментарі: 4
Додати коментар