我可以更改Android的startActivity()过渡animation?

我正在开始一个活动,宁愿有一个alpha淡入为startActivity() ,淡出finish() 。 我怎样才能在Android SDK中解决这个问题?

在执行finish()的同一个语句中,也在那里执行你的animation。 然后,在新的活动中,运行另一个animation。 看到这个代码:

fadein.xml

 <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500"/> //Time in milliseconds </set> 

在你上完课

 private void finishTask() { if(blabbla==blablabla){ finish(); runFadeAnimation(); } } private void runFadeInAnimation() { Animation a = AnimationUtils.loadAnimation(this, R.anim.fadein); a.reset(); LinearLayout ll = (LinearLayout) findViewById(R.id.yourviewhere); ll.clearAnimation(); ll.startAnimation(a); } 

fadeout.xml

 <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500"/> </set> 

在你的新Activity类中,你创build了一个类似于我写的runFadeAnimation类似的方法,然后你在onCreate中运行它,不要忘记把资源id改为fadeout。

从API级别5开始,您可以立即调用overridePendingTransition来指定显式的过渡animation:

 startActivity(); overridePendingTransition(R.anim.hold, R.anim.fade_in); 

要么

 finish(); overridePendingTransition(R.anim.hold, R.anim.fade_out); 

请参阅android上的主题: http : //developer.android.com/guide/topics/ui/themes.html 。

在themes.xml下应该有android:windowAnimationStyle ,你可以在styles.xml中看到样式的声明。

示例实现:

 <style name="AppTheme" parent="..."> ... <item name="android:windowAnimationStyle">@style/WindowAnimationStyle</item> </style> <style name="WindowAnimationStyle"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style> 

使用overridePendingTransition

 startActivity(); overridePendingTransition(R.anim.fadein, R.anim.fadeout); 

fadein.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <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" /> </set> 

fadeout.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/anticipate_interpolator" android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" /> </set> 

您可以简单地创build一个上下文,并执行下面的操作:

 private Context context = this; 

和你的animation: –

 ((Activity) context).overridePendingTransition(R.anim.abc_slide_in_bottom,R.anim.abc_slide_out_bottom); 

你可以使用任何你想要的animation。

对于fadeInfadeOut ,只能在新的Activity类中的super.onCreate(savedInstanceState)之后添加。 你不需要创build别的东西(没有XML,没有文件夹,没有额外的function)。

 overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out);