你可以创建自己的 .xml 动画文件来实现淡入一个新的 Activity 并淡出当前的 Activity:
fade_in.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="500" />
淡出效果的XML文件。
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:fillAfter="true"
android:duration="500" />
在代码中使用它,类似这样:(在您的Activity
内部)
Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
以上代码将淡出当前活动的Activity
,并淡入新启动的Activity
,从而实现平滑过渡。
更新:@Dan J指出,使用内置的Android动画可以提高性能,在进行一些测试后我确实发现了这一点。如果您喜欢使用内置的动画,请使用:
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
请注意,我引用android.R
而不是R
来访问资源ID。
更新: 现在通常使用在API级别19中引入的Transition类执行过渡效果。
overridePendingTransition(android.R.anim.fadein, android.R.anim.fadeout);
查看这些文件还可以为您提供如何改进自定义动画的提示(例如通过使淡入比淡出持续时间更长来实现)。 - Dan JoverridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
:) - AlvaroSantistebanBundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(), android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); startActivity(intent, bundle);
(该选项允许使用自定义动画启动活动,而无需覆盖默认的活动转换动画。) - oleynikd