res/transition文件夹,创建xml文件
//举个例子 :search_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<transitionSet
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<transitionSet android:duration="400">
<targets>
<target android:targetId="@id/scrim" />
</targets>
<fade />
<transition
class="dkm.gdut.com.dkmsearchviewlib.transitions.CircularReveal"
app:centerOn="@id/searchback"
android:interpolator="@android:interpolator/linear_out_slow_in" />
</transitionSet>
<fade
android:duration="300"
android:interpolator="@android:interpolator/linear_out_slow_in">
<targets>
<target android:targetId="@id/search_background" />
</targets>
</fade>
<fade
android:startDelay="400"
android:duration="400"
android:interpolator="@android:interpolator/linear_out_slow_in">
<targets>
<target android:targetId="@id/search_view" />
</targets>
</fade>
<fade
android:duration="400"
android:interpolator="@android:interpolator/fast_out_slow_in">
<targets>
<target android:targetId="@android:id/navigationBarBackground" />
</targets>
</fade>
</transitionSet>
其中</fade>、</transition>是动画效果的名称 .
Android5.0+(API>=21)支持下面这些进入与退出的转换
- 分解(explode):从场景中心移入或移出视图。
- 滑动(slide):从场景边缘移入或移出视图。
- 淡入淡出(fade):通过调整透明度在场景中增添或移除视图。
标签里面的<target android:targetId="@id/search_background" />
表示需要进行过度转场切换的View的id.这个id可以是系统自带的,也可以是我们自己定义的id.
另外,还有 excludeId
表示不需要该id的view进行过渡转场,其他的view都要进行过渡转场
<fade>
<targets>
<target android:excludeId="@android:id/statusBarBackground"/> <!--状态栏-->
<target android:excludeId="@android:id/navigationBarBackground"/> <!--导航栏-->
</targets>
</fade>
</transitionSet>
是用来实现多个过渡效果的叠加,可以在</transitionSet>
的根标签用android:transitionOrdering
注明这几种动画的演示顺序,sequential
表示顺序执行,而 together
表示同时执行。默认是同时执行的,也可以通过duration
来设置动画时间,android:startDelay
来设置动画延迟.
Transition系列文章
一、初识Transition—实现两个场景的变换
二、番外篇 Transition之ViewOverlay
三、定义 界面指定元素 或界面间共享元素 的转场动画基础
四、Content Transition实现非共享元素转场
五、SharedElementTransition之Activity间的转场
六、SharedElementTransition之Fragment间的转场
七、番外篇- 自定义Visibility
八、5.0以下实现共享转场