Activity有默认的切换效果,但是这个效果我们是可以自定义的,主要用到 overridePendingTransition(int enterAnim, int exitAnim)
这个方法。
这个方法必须在 startActivity(intent)
或者 finish()
之后被调用才能生效,他的参数含义如下:
-
enterAnim:Activity被打开时,所需的动画资源id
-
exitAnim:Activity被关闭时,所需的动画资源id
实现一个切换时有透明度变化的效果:
- activity_enter_anim.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fillAfter="true">
<alpha
android:fromAlpha="0"
android:toAlpha="1"/>
<translate
android:fromXDelta="100%"
android:toXDelta="0"/>
</set>
- activity_exit_anim.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fillAfter="true">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"/>
<translate
android:fromXDelta="0"
android:toXDelta="100%"/>
</set>
当启动一个Activity时,可以按照如下方式为其添加自定义的切换效果:
Intent intent = new Intent(this, TestActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.activity_enter_anim, R.anim.activity_exit_anim);
当Activity退出时,也可以为其指定自己的切换效果:
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.activity_enter_anim, R.anim.activity_exit_anim);
}