page.title=Обеспечение совместимости @jd:body

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

  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>

Списки и карточки

Виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView} имеются в более ранних версиях Android. Они находятся во вспомогательной библиотеке Android v7, и для них существуют следующие ограничения.

Зависимости

Чтобы воспользоваться этими возможностями в версиях 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, проверьте системный параметр {@link android.os.Build.VERSION#SDK_INT 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>.