page.title=Обеспечение совместимости @jd:body
Некоторые возможности 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:
Theme.AppCompat
;Theme.AppCompat
;В темах 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>.