我可以更改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。
对于fadeIn和fadeOut ,只能在新的Activity类中的super.onCreate(savedInstanceState)之后添加。 你不需要创build别的东西(没有XML,没有文件夹,没有额外的function)。
overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out);