转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出,谢谢
保持兼容性
如material design和自定义活动的过渡部分材料设计功能只能在Android5.0(API等级21)以上。不过,你可以设计你的应用程序在支持材料设计,仍然与设备运行的是Android的早期版本兼容的设备上运行。
定义可替换的风格
你可以配置你的应用程序使用的材料主题在支持它,并恢复到运行早期版本的Android设备较旧的主题设备:定义一个主题,继承了旧的主题(如全息)在
res/values/styles.xml下。
在
res/values-v21/styles.xml中定义与继承
材料主题同名的主题。
在manifest文件中确立这个主题作为您的应用程序的主题。
注意:如果您的应用程序使用的材料主题,但并没有提供以这种方式替代的主题,你的应用程序将无法在Android版本上运行早于5.0。
提供可供选择的布局
如果你按照设计准则不使用任何的Android5.0(API级别21)推出了新的XML属性的材料设计的布局,他们将无法工作在Android的早期版本。但是,你可以提供另一种布局。您也可以提供另一种布局,以自定义您的应用程序看起来在较早版本的Android。创建你的布局文件为Android5.0(API级别21)内
res/layout-v21/
和你选择的布局文件中的
res/layout/
早期版本的Android。例如,
res/layout/my_activity.xml
是
es/layout-v21/my_activity.xml
另一种布局。
为了避免重复代码,里面定义你的styles,修改样式
res/values-v21/使用
新的API和使用风格的继承,限定在基本样式
res/values/
和那些继承
res/values-v21/
。
使用支持库
在V7支持库R21及以上包含以下材料设计特点:
当你申请材料的设计风格作用于某些系统部件的Theme.AppCompat主题。
在Theme.AppCompat主题的Color palette的主题属性。
该RecyclerView widget中显示的数据集合。
在CardView小部件创建卡。
Color palette类从图像中提取突出的颜色。
系统部件
该Theme.AppCompat主题提供材料的设计风格于:
EditText
Spinner
CheckBox
RadioButton
SwitchCompat
CheckedTextView
Color Palette
为了获得材料的设计风格和自定义调色板与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>
Lists and Cards
该RecyclerView和CardView小部件都可以在通过Android V7支持库的这些限制来应用于较早版本的Android:
CardView falls back to a programmatic shadow implementation using additional padding。
CardView不夹与圆角相交,其children views。
依赖关系
要使用Android的早于5.0(API级别21)版本的这些特性,包括了Android V7支持库中的项目作为一个gradle依赖性:
dependencies { compile 'com.android.support:appcompat-v7:+' compile 'com.android.support:cardview-v7:+' compile 'com.android.support:recyclerview-v7:+' }
Check System Version
以下功能仅适用于Android的5.0(API等级21)以上:
Activity transitions
Touch feedback
Reveal animations
Path-based animations
Vector drawables
Drawable tinting
为了保持与早期版本的Android的兼容性,在运行时调用的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 }