Android:如何与另一个 Activity 进行垂直 Activity 过渡

Android: how to make a vertical Activity transition with another Activity

我的第一个 Activity 中有一个 ListView。当我点击里面的一个项目时,我开始另一个 Activity。好的。但是现在我想修改这两个活动之间的转换:

  1. Activity1 -> Activity2 : Activity2 从下到上的垂直过渡(进展)
  2. 当我回到 Activity1 时:Activity2 从上到下的垂直过渡(进度)

更新

我找到了符合我要求的解决方案:

Activity1 -> Activity2

startActivity();
overridePendingTransition(R.anim.from_bottom_to_top, 0);

from_botton_to_top.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_shortAnimTime"/>

Activity2 -> Activity1(后退键)

finish();
overridePendingTransition(0, R.anim.from_top_to_bottom);

from_top_to_bottom.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0%p" android:toYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"/>

您将需要使用 anim。先创建两个xml文件,放入res/anim

from_bottom_to_top.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:duration="@android:integer/config_shortAnimTime"
        />
</set>

from_top_to_bottom.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:toYDelta="100%p"
        android:duration="@android:integer/config_shortAnimTime"
        />
</set>

然后,当您启动 activity(使用 startActivity)时,之后立即调用 overridePendingTransition(int enterAnim, int exitAnim)。

您可以在完成 ActivityB 时实现相同的目的(在 overridePendingTransation 之后立即调用 finish)。

您可以播放动画并创建您的 one/tweak 它们。

使用overridePendingTransition改变Activity动画。

对于第一种情况,您可以使用:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);                     
overridePendingTransition(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_top);

第二种情况选择其他动画并调用overridePendingTransitiononBackPressedfinish 之后。 overridePendingTransition 应该在 activity 完成后立即调用。

如果您正在寻找动画,请查看 google API 示例。 https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/res/anim/ 还有很多简单实用的动画xml的。

但是 abc_slide_in_bottomabc_slide_in_bottom 几年前就在 google appcompat 库中。 abc_slide_out_bottomabc_slide_in_top 也是。