Animation transition between activities using FLAG_ACTIVITY_CLEAR_TOP

59,228

Solution 1

CoolMcGrr is right, you want to use overridePendingTransition(int enterAnim, int exitAnim).

To specifically get the standard "back button" transition, I use these as the enterAnim and exitAnim transitions:

push_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_shortAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_shortAnimTime" />
</set>

push_right_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_shortAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_shortAnimTime" />
</set>

Solution 2

You should take a look Activity.overridePendingTransition().

Of course, this requires that you run at least version 2.0 of the SDK.

Solution 3

Problem occurs nowadays because pre-ICS and ICS have different built-in activity transitions. This is much cleaner than defining your own animation and SDK independant:

Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NO_ANIMATION);
this.startActivity(intent);
finish();

This will start the activity (not visible yet) and play the "activity finish" transition to the new activity.

Solution 4

I used this code:

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

You can see these examples in GmailAnimation or LopeAnimations. Also you can see more in this Blog.

Share:
59,228
Romain Piel
Author by

Romain Piel

Updated on February 14, 2020

Comments

  • Romain Piel
    Romain Piel about 4 years

    In my android app, I'm making a method that pop all activities and bring up the first activity.

    I use this code:

    Intent intent = new Intent(this, MMConnection.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    this.startActivity(intent);
    

    As I noticed that the transition was still a left to right animation, does someone know if there is a way to change system animation when starting an activity?

    Actually, I'd ideally like to have a right to left transition (like when the return button is tapped)

    thanks for help!

  • ArtOfWarfare
    ArtOfWarfare over 11 years
    Seems to be a better answer to me, given E-Riz actually answered the question rather than just post a link as CoolMcGrrr did. Then again E-Riz was 8 months later to answer it.
  • Apqu
    Apqu about 10 years
    Where would you call the overridePendingTransition? Before or after startActivity?
  • E-Riz
    E-Riz about 10 years
    @Tur, just read the Javadoc: developer.android.com/reference/android/app/…, int)