1.首先在res/anim下新建动画文件:
1)当前活动页面退出动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="500"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="0%"
android:pivotY="50%"
android:toXScale="0.8"
android:toYScale="0.8"/>
<alpha
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="500"
android:fromAlpha="1"
android:toAlpha="0"/>
</set>
这里可以使用的标签有主要有<scale>, <alpha>, <rotation>。
<scale>标签中interpolator指动画的效果,我使用的是系统的加速-减速的效果。
duration指整个动画播放时间,以毫秒为单位。
fromXScale/toXScale值X方向长度从100%变化成80%,fromYScale/toYScale同理。
pivotX/pivotY指缩放中心,我这里以左中为中心点缩放,若设置50%/50%则以中心点缩放。
<alpha>标签很容易理解,在500ms内从可见变为不可见。
2)传入的活动页面进入动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="500"
android:fromXScale="0.8"
android:fromYScale="0.8"
android:pivotX="100%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1"/>
<alpha
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="500"
android:fromAlpha="0"
android:toAlpha="1"/>
</set>
动画效果和进入相呼应,方向相反。
2.在Java代码中的实现:
……
switch (item.getItemId()) {
case R.id.action_setting:
Intent intent1 = new Intent(MainActivity.this, SettingActivity.class);
startActivity(intent1);
overridePendingTransition(R.anim.enter_zoom_in,R.anim.enter_zoom_out);
break;
case R.id.action_about:
Intent intent2 = new Intent(MainActivity.this, About.class);
startActivity(intent2);
overridePendingTransition(R.anim.enter_zoom_in,R.anim.enter_zoom_out);
break;
}
……
这里调用方法overridePendingTransition(),次方法接受两个参数,第一个为传入的活动页面进入动画,第二个为当前活动页面退出动画。