按下面这些步骤来支持Material Design
1.学习material design规范
google的看不了。分享一个中文版的,感谢翻译者!
http://wiki.jikexueyuan.com/project/material-design/
2.使用material风格的主题
3.按照设计指南创建你的布局文件
4.指定views的高度来投射阴影
5.使用系统提供的列表和卡片控件
6.自定义应用中使用的动画
保持兼容性
在Android5.0之前的系统也可以通过兼容性来使用Material Design的新特性,具体在后面介绍。
更新你的App使用Material风格
为了升级你的应用到Material风格,按照设计指南来更新你的布局文件,注意升级支持深度,触碰反馈以及动画。
创建Material风格的新App
如果你打算创建一个Material风格的新App,
http://wiki.jikexueyuan.com/project/material-design/ 给你提供了一个新的设计框架,按照设计指南来使用框架中的新特性来开发你的App吧。
使用Material风格的Theme
使用一个继承自android:Theme.Material的主题:
<!-- res/values/styles.xml -->
<resources>
<!-- your theme inherits from the material theme -->
<style name="AppTheme" parent="android:Theme.Material">
<!-- theme customizations -->
</style>
</resources>
material风格的主题更新了系统控件,使用了这个主题,你就可以调整它们的颜色,触摸反馈的新的默认动画,以及activity之间的过渡动画。更多的将在后面介绍。
创建布局
除了应用以及自定义material风格的主题外,你的布局应当符合material的使用指南。创建布局时,下面这些点是要多加注意的:
- 基线网格
- 方法
- 间距
- 触摸目标的大小
- 布局结构
指定views的高度
视图可以投下阴影,一个视图的高度值决定了它阴影的大小以及它的绘制命令。使用这个android:elevation属性在布局中设置一个view的高度。
<TextView
android:id="@+id/my_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next"
android:background="@color/white"
android:elevation="5dp" />
translationZ这个新的属性可以帮你处理view高度发生临时变化是来产生动画。当响应触摸手势时,高度的变化是有用的。
创建卡片和列表
RecyclerView是一个可插拔的版本的ListView,支持不同的布置形式并且提供了更好的性能。CardView可以使不同的应用间提供一致的显示效果来在卡片中显示应用内的信息。下面是一个例子:
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="200dp"
android:layout_height="200dp"
card_view:cardCornerRadius="3dp">
...
</android.support.v7.widget.CardView>
更多的内容,后面介绍。
自定义动画
Android5.0包含了很多创建动画的新API。比如说,你可以打开activity切换动画并且定义一个activity的出口动画。
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// enable transitions
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
setContentView(R.layout.activity_my);
}
public void onSomeButtonClicked(View view) {
getWindow().setExitTransition(new Explode());
Intent intent = new Intent(this, MyOtherActivity.class);
startActivity(intent,
ActivityOptions
.makeSceneTransitionAnimation(this).toBundle());
}
}
当你从这个activity切换到另外一个activity时,这个动画就会生效。
更多关于新动画API的内容,后面会详细介绍。