Can I change the Android startActivity() transition animation?
Starting from API level 5 you can call overridePendingTransition immediately to specify an explicit transition animation:
startActivity();overridePendingTransition(R.anim.hold, R.anim.fade_in);
or
finish();overridePendingTransition(R.anim.hold, R.anim.fade_out);
See themes on android: http://developer.android.com/guide/topics/ui/themes.html.
Under themes.xml there should be android:windowAnimationStyle
where you can see the declaration of the style in styles.xml.
Example implementation:
<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>
In the same statement in which you execute finish(), execute your animation there too. Then, in the new activity, run another animation. See this code:
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>
In your finish-class
private void finishTask() { if("blabbla".equals("blablabla"){ finish(); runFadeInAnimation(); }}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>
In your new Activity-class you create a similiar method like the runFadeAnimation I wrote and then you run it in onCreate and don't forget to change the resources id to fadeout.