上图表示了对于一个Activity它在不同位置所对应的坐标。
从左往右,X轴的变化为-100% --- 0% --- 100%
从右往左,X轴变化为 100% ---0% --- -100%
当然也可以通过修改Y轴的值来实现上下切换,变化的比例也可不一定是100%,根据实际效果而定。
1.从左边切入和切出
left_show.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="-100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
left_hide.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="100%"
android:toYDelta="0%" />
</set>
2.从右边切入和切出
right_show.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>
right_hide.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0%"
android:toXDelta="-100%"
android:toYDelta="0%" />
</set>
切换至activity需使用overridePendingTransition(R.anim.right_show,R.anim.right_hide),但是需要在startActivity或者startActivityFromFragment以及finish之后使用。
切换至fragment需使用FragmentTransaction的setCustomAnimations(R.anim.right_show,R.anim.right_hide),可以结合hide,add,remove,replace使用。