Creating Apps With Material Design —— Maintaining Compatibility

严琨
2023-12-01

转载请注明 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.xmles/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
}

 类似资料:

相关阅读

相关文章

相关问答