首页 > 解决方案 > 如何使用意图通过后退键动画进入活动?

问题描述

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

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

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

更新:我能够使用 获得幻灯片动画getWindow().setExitTransition(new Slide(Gravity.END)),但过渡看起来与 android 的默认后退键动画不完全相同。

标签: android

解决方案


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

在调用启动活动之后,调用 overridePendingTransition(),如下所示:

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

推荐阅读