开发者

Animation transition between activities using FLAG_ACTIVITY_CLEAR_TOP

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 s开发者_运维问答omeone 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!


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>


You should take a look Activity.overridePendingTransition().

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


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜