本篇文章简单根据Transition 实现界面的跳转动画。共享VIew的部分请移步到Android 5.0 Transition动画 之图片传递View共享
具体 Demo google-simple-topeka
官方支持5.0以上,网上有很多4.x的实现,大家可以自行搜索
如有不正确的地方,欢迎指正。
1.首先在style中添加支持Transations
<item name="android:windowActivityTransitions">true</item>
2.定义动画:
Activity的进入和退出动画,在res/transition/创建动画xml
Transition的动画类型:
Fade 渐显
Slide 侧滑
Explode 分裂 具体下图:
图来自参考
动画文件
res/transition/signin_enter.xml
<!--slide做了一个侧滑效果。android:slideEdge="left" 指定方向。 -->
<slide xmlns:android="http://schemas.android.com/apk/res/android" android:slideEdge="left">
<targets>
<!--excludeId:不包括的界面ID-->
<target android:excludeId="@android:id/statusBarBackground" />
<!--表示只针对状态栏-->
<!--<target android:targetId="@android:id/statusBarBackground"/>--> </targets>
</targets>
</slide>
res/transition/signin_exit.xml
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
<slide android:slideEdge="left">
<targets>
<target android:excludeId="@android:id/statusBarBackground" />
</targets>
</slide>
<fade>
<targets>
<target android:targetId="@id/fragment_sign_in_content" />
</targets>
</fade>
</transitionSet>
2.两种定义动画方式:
1、getWindow().setExitTransition(transition);
2、通过主题定义
这里采用第二种:
style.xml
<style name="Topeka.SignInActivity">
<item name="android:windowEnterTransition">@transition/signin_enter</item>
<item name="android:windowExitTransition">@transition/signin_exit</item>
</style>
androidManifest.xml:
<activity android:name=".activity.SignInActivity"
android:theme="@style/Topeka.SignInActivity"
android:windowSoftInputMode="adjustPan">
</activity>
3.跳转方式:
不能简单的startActivity啦
Intent starter = new Intent(activity, SignInActivity.class);
ActivityCompat.startActivity(activity,
starter,
ActivityOptionsCompat.makeSceneTransitionAnimation(activity).toBundle());
网友评论