编写: allenlsy - 原文: https://developer.android.com/training/material/compatibility.html
有些Material Design特性,比如主题和自定义Activits切换效果等,只在Android 5.0 (API level 21) 以上中可用。不过,你仍然可以使用这些特性实现Material Design,并保持对旧版本Android 系统的兼容。
你可以配置你的应用,在支持Material Design的设备上使用Material主题,在旧版本Android上使用旧的主题:
res/values/styles/xml
res/values-v21/styles.xml
AndroidManifest.xml
Note: 如果你的应用设置了一个主题,但是没有提供备选Style,你可能无法在低于Android 5.0版本的系统中运行应用。
如果你根据Material Design设计的应用的Layout中没有使用任何Android 5.0 (API level 21)中新的XML属性,他们在旧版本Android中就能正常工作。否则,你要提供备选Layout。你可以在备选Layout中定义你的应用在旧版本系统中的界面。
在res/layout-v21/中定义Android 5.0 (API level 21) 以上系统的Layout,在res/layout中定义早前版本Android的Layout。比如,res/layout/my_activity.xml是对于res/layout-v21/my_activity.xml的一个备选Layout。
res/layout-v21/
res/layout
res/layout/my_activity.xml
res/layout-v21/my_activity.xml
为了避免代码重复,在res/values中定义style,然后在res/values-v21中修改新API需要的style。使用style的继承,在res/values/中定义父style,在res/values-v21/中继承。
res/values
res/values-v21
res/values/
res/values-v21/
v7 support libraries r21 及更高版本包含了以下Material Design 特性:
Theme.AppCompat
RecyclerView
CardView
Palette
Theme.AppCompat 主题中提供了这些组件的 Material Design style:
要获取Material Design style,并用v7 support library自定义调色板,就要应用以下中的一个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组件可通过v7 support libraries支持旧版本Android,但有以下限制:
要在Android 5.0之前的版本使用这些特性,需要在项目的Gradle依赖中加入Android v7 support library:
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 level 21) 及以上版本中可用:
要保持向下兼容,请在使用这些特性是,使用以下代码在运行时检查系统版本:
// 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 }
Note:要声明应用支持哪些Android 版本,在manifest文件中使用android:minSdkVersion和android:targetSdkVersion属性。要在Android 5.0中使用Material Design特性,设置android:targetSdkVersion属性为21。更多信息,参见<uses-sdk> API指南。
android:minSdkVersion
android:targetSdkVersion
<uses-sdk>
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8