效果
overridePendingTransition(int enterAnim, int outAnim)
//参数一是下一个Activity的进入动画,参数二是当前Activity的退出动画
overridePendingTransition(int enterAnim, int outAnim)
进入动画
activity.overridePendingTransition(R.anim.move_left_in, R.anim.move_left_out);
R.anim.move_left_in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0"/>
</set>
R.anim.move_left_out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-100%p"
android:toYDelta="0"/>
</set>
跳转的时候 A->B
A 执行 移除动画 R.anim.move_left_out
B 执行 进入动画 R.anim.move_left_in
也就是 先执行R.anim.move_left_out 再执行 R.anim.move_left_in
跳转 B finish 到 A
B 执行 移除动画 R.anim.move_right_out
A 执行 进入动画 R.anim.move_right_in
R.anim.move_right_in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="-100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0"/>
</set>
R.anim.move_right_out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%p"
android:toYDelta="0"/>
</set>
- 移动的距离也要有考虑,两个互相搭配会形成一种左右切换的效果
问题:
- android:duration="300" 动画时间要一致不然会导致 切换的时候黑屏和动画不生效
- 执行退出动画的时候需要重写 finish()方法 再添加 activity.overridePendingTransition(R.anim.move_left_in, R.anim.move_left_out);