How to perform a fade animation on Activity transition? How to perform a fade animation on Activity transition? android android

How to perform a fade animation on Activity transition?


You could create your own .xml animation files to fade in a new Activity and fade out the current 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" />

fade_out.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" />

Use it in code like that: (Inside your Activity)

Intent i = new Intent(this, NewlyStartedActivity.class);startActivity(i);overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

The above code will fade out the currently active Activity and fade in the newly started Activity resulting in a smooth transition.

UPDATE:@Dan J pointed out that using the built in Android animations improves performance, which I indeed found to be the case after doing some testing. If you prefer working with the built in animations, use:

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

Notice me referencing android.R instead of R to access the resource id.

UPDATE: It is now common practice to perform transitions using the Transition class introduced in API level 19.


Just re-posting answer by oleynikd because it's simple and neat

Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(),    android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); startActivity(intent, bundle);


you can also add animation in your activity, in onCreate method like below becasue overridePendingTransition is not working with some mobile, or it depends on device settings...

View view = findViewById(android.R.id.content);Animation mLoadAnimation = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in);mLoadAnimation.setDuration(2000);view.startAnimation(mLoadAnimation);