如何在Android上为同一活动设置不同的动画过渡?

时间:2013-03-03 00:12:22

标签: android transitions

请参考此图片:

https://lh4.googleusercontent.com/-gEW9RFcjpnQ/UTKSd0DSR5I/AAAAAAAAALs/P7i47evr2uY/s503/transitions.png

1-启动应用程序时,会通过活动显示启动画面

2-然后,执行进入主要活动(并且启动闪屏活动)

3-用户通过按钮点击可以进入screen-1或screen-2活动。

3.1-执行此操作时,将保留主活动(未完成)并创建所需的屏幕活动。

4-从屏幕-2或屏幕2活动回来只需完成它们即可完成。然后,默认情况下,执行会返回到主活动。

我想要的是:

1-图片上(A)的默认过渡动画。它表示默认动画从Splash到Main Activity,从Main Activity到screen-1,以及screen-1完成时(返回Main Activity时)。

2-图片上(B)的特定过渡动画。这意味着从主活动进入屏幕2并且屏幕2完成时(返回主活动时)。

就我在这里和互联网上搜索而言,我从未发现如何实现这一目标。

如何做到这一点?

我成功地从Main Activity-> screen-1和Main Activity-> screen-2获得了不同的动画,但我完全无法在screen-1->主要活动和屏幕之间拥有不同的动画 - 2->主要活动。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:3)

使用以下代码启动屏幕2的活动:

startActivityForResult(intent4Screen2, RESULT_ANIMATION);
overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);

在onActivityResult()中你输入:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case RESULT_ANIMATION:
            overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
            break;
    }
}

RESULT_ANIMATION是一个常量,zoom_enter和zoom_exit是你的动画,如:

<set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/decelerate_interpolator">
    <alpha
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

如果您需要支持不支持overridePendingTransition()方法的Android&lt; 2.0,则需要使用反射。