Android 5.0以下使用Material Design 特性

最近在学习Material Design的一些新特性,于是呢就用博客来记录一下自己的学习过程吧,正好也可以跟有缘人分享一下大笑

Google提供了 v7 Support Libraries 让我们可以在 API level 21以下的设备上使用一些Material Design的特性。

但是遗憾的以下的这些特性还是只能在5.0+使用:

    • Activity transitions
    • Touch feedback
    • Reveal animations
    • Path-based animations
    • Vector drawables
    • Drawable tinting
是不是很坑爹…… 没办法啦

通过引用v7包,我们可以继承Theme.AppCompat主题来使用部分有Materail Design特性的控件:

并且使用v7包我们还可以通过继承Theme.AppCompat来定制Color Palette

<!-- 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,怎么样 还是挺不错的吧。不过记得在引用这两个控件的时候要记得去添加依赖库哦~~
</span></span><pre name="code" class="html">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.+'
}
<span style="font-family:Roboto, sans-serif;">那么接下来问题来了?(此处省略15个字)</span>
那如果你说如果我的Target版本就5.0+的呢?那是不是就要考虑向下兼容的问题了。
首先我们可以定义可供选择的样式(styles文件)
1、在一个继承至老版本主题(像Holo主题)位于 res/values/styles.xml的样式文件中定义正常的样式,而在 res/values-v21/styles.xml中继承至Material Design Theme 的styls.xml中定义包含Material Design 特性的样式。
当然在有了styles.xml文件之后我们肯定要有可供选择的layout文件咯
2、在   res/layout-v21/中定义你专门为Android5.0+提供的布局,而在   res/layout/中定义给5.0一下版本定义的布局。

(有个秘密要偷偷告诉你们O(∩_∩)O:在 res/values/中定义基本的样式,然后在 res/values-v21/中继承至刚才定义的样式在添加上属于Material Design的属性。这样就可以避免代码的重复~~~)

当然如果你要在Java代码中动态调用Material Design的API的话,就需要对当前的系统版本进行检测然后再调用


 
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值