zoukankan      html  css  js  c++  java
  • Android Material Design-Maintaining Compatibility(保持兼容性)-(七)

    转载请注明出处:http://blog.csdn.net/bbld_/article/details/40634829

    翻译自: http://developer.android.com/training/material/compatibility.html


    一些materialdesign中的功能像material主题和自己定义activity的过渡仅仅能在Android 5.0(API级别21)或以上的系统版本号中才干使用。可是你能够设计你的app去使用那些功能,不管在支持materialdesign的设备上亦或是早期的Android版本号上。

    定义可选的样式

    你能够配置你的app去使用material design在支持它的设备上,在早期的Android版本号中使用旧的主题:

    1.        定义一个主题。它继承一个旧的主题(像Holo)。放在res/values/styles.xml

    2.        定义一个同样名字主题,继承material主题,放在res/values-21/styles.xml

    3.        在manifest文件里设置这个主题为你的app主题。

    注意:假设你的app使用了material主题可是没有提供一个可替代的主题,你的app将无法在Android 5.0之前的系统中执行。

    提供可替代的布局

    假设你依据设计准则不使用不论什么Android5.0引入的新的XML的属性去设计你的布局。他们能在Android的早期版本号上执行。否则,你能够提供可选择的布局。你也能够提供可替代的布局。以自己定义你的app看起来是在早期的Android版本号上。

    为Android 5.0(API级别21)或以上系统创建布局时则布局文件放在res/layout-v21/目录里。早期Android版本号的可替代的布局则放在res/layout/目录里。比如,res/layout/my_activity.xmlres/layout-v21/my_activity.xml的一个可替代的布局

    为了避免反复的代码,在res/values/里定义你的样式资源。为新的API改动的样式则放在res/values-v21/目录里。而且使用样式继承,在res/values/中定义主要的样式。在res/values-v21/.中继承主要的样式。

    使用支持库

    v7支持库r21及以上的版本号包括下面的material design的特点:

    l  当你应用Theme.AppCompat的主题时。一些控件具有materialdesign style的特征。

    l  Theme.AppCompat具有Color palette theme属性。

    l  RecyclerView控件显示数据集合。

    l  CardView控件创建卡片。

    l  Palette类去从图片中提取突出的颜色。

    系统控件

    Theme.AppCompat主题为这些控件提供了material design styles:

    l  EditText

     Spinner

     CheckBox

    l  RadioButton

     SwitchCompat

     CheckedTextView

    颜色调色板

    为了在Android v7支持库中获得material design styles和自己定义调色板,使用一个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>
    


    列表和卡片

    RecyclerViewCardView控件能够通过Android v7支持包在早期的Android版本号上使用。可是有这些限制:

    l  CardView回退到使用有规则的阴影通过使用额外的填充。

    l  CardView不会裁剪它的子视图。使用圆角相交。


    依赖

    要在早于Android5.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.+'
    }

    补充:Eclipse中加入依赖在前面的博客中我已做了说明(Android Material Design-Creating Lists and Cards(创建列表和卡片)-(三))。


    检查系统版本号

    下面功能仅适用于Android的5.0(API等级21)以上:

    l  Activity transitions(Activity的过渡转换)

    l  Touch feedback(触摸反馈)

    l  Reveal animations(显示、揭露动画)

    l  Path-based animations(基于路径的动画)

    l  Vector drawables(矢量画图资源)

    l  Drawable tinting(Drawable着色)

    为了保持与早期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
    }
    

     注意:要指定你的app所能支持的版本号,使用在你的manifest文件里android:minSdkVersionandroid:targetSdkVersion属性去声明。要在Android 5.0中须要使用material desing的功能,设置android:targetSdkVersionattribute属性的值为21.。很多其它的信息请參阅<uses-sdk>的API文档说明。

    -----------------------------------------------------------------  Material Design系列的翻译完结  ----------------------------------------------------------------------



  • 相关阅读:
    P1030 求先序排列 P1305 新二叉树
    spfa
    Clairewd’s message ekmp
    Cyclic Nacklace hdu3746 kmp 最小循环节
    P1233 木棍加工 dp LIS
    P1052 过河 线性dp 路径压缩
    Best Reward 拓展kmp
    Period kmp
    Substrings kmp
    Count the string kmp
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7244645.html
Copyright © 2011-2022 走看看