Обеспечение совместимости

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

  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 комментария

Как обновить android приложения до Material Design | fanDROID.info · 22.01.2015 в 07:36

[…] Вы можете добавить много особенностей material design к своему приложению, не прекращая поддерживать его совместимость с ранними версиями Android. Для получения дополнительной информации посмотрите статью Поддержка совместимости. […]

Nothing found for Urok 2 Ispolzovanie Material Theme V Android Prilozheniyah · 23.01.2015 в 11:17

[…] Как обновить android приложения до Material Design | fanDROID.info к записи Урок 7. Поддержание совместимости приложений с Material Desig… […]

Урок 2. Использование Material Theme в android приложениях | fanDROID.info · 23.01.2015 в 11:18

[…] Примечание: материальная тема доступна только в версиях Android 5.0 (уровень API 21) и выше. Вспомогательные библиотеки v7 предоставляют темы с материальными стилями для некоторых виджетов и поддерживают настройку цветовой палитры. Для получения дополнительной информации, смотрите Поддержка совместимости. […]

Урок 3. Создание списков и карточек в android приложениях с Material Design | fanDROID.info · 29.01.2015 в 10:33

[…] Чтобы создать карточку с тенью, используйте атрибут card_view:cardElevation. CardView использует реальную высоту и динамические тени на Android 5.0 (уровень API 21) и выше, а на более ранних версиях возвращается обратно к программным теням. Для получение дополнительной информации смотрите поддержка совместимости. […]

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.