Android L Material Design
free 2014-7-6
简介:
最近Goolge发布了Android L的sdk及说明文档,这次发布的Android L系统主要有四个方面的较大更新:
1) 全新的UI设计规范(Material Design)
这是谷歌为了解决碎片化问题的又一重要举措,将统一包括手机、 平板、笔记本以及网页端的设计风格。谷歌称:“Material Design是美丽和大胆的,因为干净的排版和布局简单且容易理解。”
2) 新的虚拟机ART取代Dalvik
在Android L系统中,google使用ART (Android Runtime ) 虚拟机替换了之前一直默认使用的Dalvik虚拟机。虽然ART理论上和Dalvik保持兼容,但以防万一我们的app最好还是要在ART上全面测试一遍。
3) 增强通知栏(Enhanced Notifications)
这个增强体现在app可以控制通知出现的位置和外观,也不影响用户操作屏幕,类似于android的浮窗效果。
4) 提升资源利用效率(Increased Efficiency)
Google提供新的资源访问控制方法,进一步提高资源访问效率。
对于App开发而言,可见的是1)和3),另外两点都是系统性能提升的,不涉及开发工作。本文主要对第1)点Material Design进行简单分析。
1. 环境配置
如果想开发或测试Android L的新特性,必须先下载Android L的SDK。那么你需要最新的SDK Tools、Platform-tools和Build-tools,所以先升级你的ADT(最新Rev. 23),然后就就可以看到Android L SDK的下载了。
下载完成SDK后创建虚拟设备Nexus 5或Nexus 7都可以,Target设置为Android L就,然后就可以测试Android L的新特性了。
另外需要注意,Android L的SDK需要java7及以上版本的支持。
2. 新的UI设计规范(Material Design)
Material Design不像Android过去采用的Holo风格那样深沉,增加或修改了阴影动画功能,使其更加跳动和富有活力。在你的应用中可以按照material design 规范中定义的准则以及使用新的组件和功能。
2.1新主题(Material Theme)
Android L新定义了三种Theme,如下
@android:style/Theme.Material (dark version)
@android:style/Theme.Material.Light (light version)
@android:style/Theme.Material.Light.DarkActionBar
Material Theme最大的特点是可以配置状态栏和工具栏的色彩,这样可以使色调统一。
<resources>
<style name="AppTheme" parent="android:Theme.Material">
<!-- Actionbar的颜色 -->
<item name="android:colorPrimary">@color/primary</item>
<!-- 状态栏和工具条的颜色 -->
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<!-- theme UI controls like checkboxes and text fields -->
<item name="android:colorAccent">@color/accent</item>
</style>
</resources>
当然,改变状态栏和工具栏的颜色也可以通过API来实现,Window.setStatusBarColor().
2.2新Widget
1)RecyclerView
RecyclerView是增强的ListView,它在滚动效率和动态改变item性能方面有较大提升。RecyclerView将 layout 抽象成了一个LayoutManager,RecylerView 不负责子 View 的布局, 我们可以自定义LayoutManager来实现不同的布局效果,Android L目前只提供了LinearLayoutManager。 LinearLayoutManager 可以指定方向,默认是垂直, 可以指定水平, 这样就轻松实现了水平的 ListView。
RecyclerView 的另一个特点是标准化了 ViewHolder, 编写 Adapter 面向的是 ViewHoder 而不在是View 了, 复用的逻辑被封装了, 写起来更加简单。下图是RecyclerView的框架图:
官方解释及例子参考:http://developer.android.com/preview/material/ui-widgets.html
2)CardView
CardView比较简单,它继承FrameLayout,实现了圆角,用card_view:cardCornerRadius属性指定圆角的半径,另外它也有Android L共有的阴影属性,可以设置阴影。下图是卡片的一个例子:
2.3 新增视图阴影属性(View Shadows)
除了X、Y属性,Android L 开发者预览版的视图提供了Z属性,Z属性表示视图的仰角,它决定了:
1)阴影大小,高Z值的视图投射更大的阴影
2)绘制顺序,高Z值的视图显示在最上面
为了使用阴影,在布局中可以使用android:elevation 属性来指定view的Z值,在代码中可以通过View.setElevation方法指定View的Z值。
2.4 新的动画API
Android L 开发者预览版提供新的动画API,你可以为UI控件的触摸响应、视图的状态、Activity的切换创建新的自定义动画。
新的动画API可以让你做到:
1)使用触摸反馈动画响应view的触摸事件(Touch feedback animations)
2)使用Reveal effect animations显示隐藏View
3)Activity transition animations切换Activity
4)创建更加自然的曲线运动动画
5)一个或多个视图属性变化动画(state change animations)
6)视图状态变化动画(state list drawables)
Touch feedback animations 内置在android的标准控件内,例如 buttons。新的APIs可以让你自定义动画,并且让动画加入到自定义的view中。
参考: