【问题标题】:How to go to an activity with the back key press animation using an intent?如何使用意图通过后键按下动画进入活动?
【发布时间】:2020-09-16 21:10:25
【问题描述】:

众所周知,默认情况下,当使用 Intent 从一个 Activity 移动到另一个 Activity 时,第二个 Activity 似乎从右向左滑入,当按下返回按钮时,第一个 Activity 似乎从左滑入对。我想使用意图从一个活动转到另一个活动,以便第二个活动看起来从左到右滑入。换句话说,我希望过渡看起来好像用户正在按下返回按钮。

我检查了this,但只有将动画应用于整个活动的说明,而不是使用意图从活动转换到另一个活动的说明。 This 是一个很好的例子,但我不知道 android 用于其活动转换的默认持续时间(当使用意图进入另一个活动时,以及返回时),我不希望我的转换动画看起来/feel 与默认的 android 过渡动画不同。

有谁知道我可以如何使用意图简单地将后退按键动画应用于活动转换?如果没有,有谁知道 android 用于其默认活动转换的默认持续时间?

更新:我能够使用 getWindow().setExitTransition(new Slide(Gravity.END)) 获得幻灯片动画,但过渡看起来与 android 的默认返回键动画不太一样。

【问题讨论】:

    标签: android


    【解决方案1】:

    我最终试图通过反复试验找出持续时间(二分搜索)。我按照this 教程(我在问题中链接到)。在此期间,我得出的值为 233。

    分步说明:

    在 res 目录中创建一个 anim 文件夹。在该文件夹中创建两个文件:

    slide_from_left.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:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:duration="233" />
    </set>
    

    slide_to_right.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:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:duration="233" />
    </set>
    

    调用启动activity后,调用overridePendingTransition(),如下:

    startActivity(backIntent);
    overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right);
    

    【讨论】:

      【解决方案2】:

      在您的主题中,您可以使用android:windowEnterTransitionandroid:windowExitTransition

      <style name="BaseAppTheme" parent="android:Theme.Material">
        ...
      
        <!-- specify enter and exit transitions -->
        <item name="android:windowEnterTransition">@transition/explode</item>
        <item name="android:windowExitTransition">@transition/explode</item>
        
        ...
      </style>
      

      您可以找到更多信息here

      您也可以使用overridePendingTransition 来覆盖过渡。请从here中查找示例

      【讨论】:

      • 抱歉,第一种方法设置了活动的动画。我不希望每次活动开始或退出时都发生这种情况。我只想设置从一个活动到另一个活动的动画。第二种方法很好,只是我不知道android的滑入滑出动画的默认时长。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多