前言
用户跟你的App进行交互时,Material Design中的动画给予用户动作的反馈和提供视觉的一致感。
Activity transitions(Activity过渡效果)
Animate Vector Drawables(可绘矢量动画)
除我们已经学习过的动画之外,Material Design还给我们提供了什么动画?
Touch feedback(触摸反馈)
Reveal effect(揭露效果)
Curved motion(曲线运动)
View state changes (视图状态改变)
Touch feedback(触摸反馈)
当用户与用户界面进行交互时,materialdesign中的触摸反馈在触摸点上提供了一种瞬时视觉确认。按钮的默认触摸反馈动画使用新的RippleDrawable类,它使用涟漪(波纹)效应在不同状态间转换。
在大多数情况下,你应该在你的布局XML文件中使用如下的方法去指定视图的背景:
?android:attr/selectableItemBackground (有界波纹)
?android:attr/selectableItemBackgroundBorderless (无界波纹)
注意:selectableItemBackgroundBorderless是API级别21上的新属性。
效果如下:
layout:
- <Button android:layout_width="100dp" android:layout_height="100dp"
- android:background="?android:attr/selectableItemBackground"
- android:text="有界"
- android:textColor="@android:color/white"
- android:colorControlHighlight="@android:color/holo_red_dark"/>
- <Button android:layout_width="100dp" android:layout_height="100dp"
- android:background="?android:attr/selectableItemBackgroundBorderless"
- android:textColor="@android:color/white"
- android:text="无界"/>
或者,你可以定义一个RippleDrawable作为波纹元素的XML资源
- <ripple
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:color="@color/accent_dark">
- <item>
- <shape
- android:shape="oval">
- <solid android:color="?android:colorAccent" />
- </shape>
- </item>
- </ripple>
你可以给RippleDrawable对象指定一种颜色。要更改默认的触摸反馈颜色,使用主题的android:colorControlHighlight属性。
Reveal effect (揭示效果)使用ViewAnimationUtils.createCircularReveal() 方法
- public Animator createAnimation(View v, Boolean isFirst) {
- Animator animator;
- if (isFirst) {
- animator = ViewAnimationUtils.createCircularReveal(
- v,// 操作的视图
- 0,// 动画开始的中心点X