之前写过一篇Activity切换动画的文章Activity切换动画(滑入滑出)
本文还采用滑入滑出的方式,贴一下Fragment之间切换动画的实现,Fragment比Activity需要多考虑一点
activity 右侧滑入左侧滑出没问题,但是fragment来回切换不能总是从左侧滑入,所以这次需要使用4个xml动画
代码如下:
1.右侧滑入
from_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200" //动画时间
android:fromXDelta="100%p" //位移距离
android:toXDelta="0"/>
</set>
2.右侧滑出
out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromXDelta="0.0"
android:toXDelta="100.0%p" />
</set>
3.左侧滑入
from_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromXDelta="-100.0%p"
android:toXDelta="0.0" />
</set>
4.左侧滑出
out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="200"
android:fromXDelta="0"
android:toXDelta="-100%p" />
</set>
动画准备好后,在包含Fragment的Activity类中添加一下代码:
//我的Demo中只有两个Fragment 首页 和 个人中心 一左一右 这是左边的
//需要加到mTransaction.add()和mTransaction.show()方法之前
//首页的
mTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
mTransaction.setCustomAnimations(
R.anim.form_left,
R.anim.out_right);
//个人中心的
mTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
mTransaction.setCustomAnimations(
R.anim.slide_in_form_right,
R.anim.slide_out_to_left);
这样的实现效果是 单击个人中心 从右向左滑动,单击首页 从左向右滑 体验比较好。