【问题标题】:Animation transition between activities using FLAG_ACTIVITY_CLEAR_TOP使用 FLAG_ACTIVITY_CLEAR_TOP 的活动之间的动画过渡
【发布时间】:2011-03-31 02:19:25
【问题描述】:

在我的 android 应用程序中,我正在制作一个弹出所有活动并调出第一个活动的方法。

我使用这个代码:

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

当我注意到过渡仍然是从左到右的动画时,有人知道是否有办法在启动 Activity 时更改系统动画?

实际上,我希望有一个从右到左的过渡(比如点击返回按钮时)

感谢您的帮助!

【问题讨论】:

    标签: android animation android-activity android-intent transition


    【解决方案1】:

    我使用了这个代码:

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

    您可以在GmailAnimationLopeAnimations 中查看这些示例。您也可以在Blog 中看到更多信息。

    【讨论】:

      【解决方案2】:

      CoolMcGrr 是对的,你想用overridePendingTransition(int enterAnim, int exitAnim)

      为了专门获得标准的“后退按钮”转换,我将它们用作enterAnimexitAnim 转换:

      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>
      

      【讨论】:

      • 对我来说似乎是一个更好的答案,因为 E-Riz 实际上回答了这个问题,而不是像 CoolMcGrrr 那样仅仅发布一个链接。然后 E-Riz 又是 8 个月后回答它。
      • 在哪里调用 overridePendingTransition?在 startActivity 之前还是之后?
      • @Tur,只需阅读 Javadoc:developer.android.com/reference/android/app/…, int)
      【解决方案3】:

      你应该看看Activity.overridePendingTransition()

      当然,这要求您至少运行 2.0 版的 SDK。

      【讨论】:

        【解决方案4】:

        现在出现问题是因为 pre-ICS 和 ICS 具有不同的内置活动转换。 这比定义您自己的动画和独立于 SDK 的方式要干净得多:

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

        这将启动活动(尚不可见)并播放“活动完成”过渡到新活动。

        【讨论】:

          猜你喜欢
          • 2012-03-24
          • 1970-01-01
          • 2015-03-26
          • 2012-08-19
          • 2016-09-29
          • 2011-06-23
          • 2015-05-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多