【问题标题】:Android: how to make a vertical Activity transition with another ActivityAndroid:如何与另一个 Activity 进行垂直 Activity 转换
【发布时间】:2015-07-01 15:04:58
【问题描述】:

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

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

更新

我根据自己的要求找到了解决方案:

活动1 -> 活动2

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"/>

【问题讨论】:

    标签: android android-activity android-transitions


    【解决方案1】:

    使用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 应该在您的活动完成后立即调用。

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

    但是 abc_slide_in_bottomabc_slide_in_bottom 已经在 google appcompat lib 中多年了。 abc_slide_out_bottomabc_slide_in_top 也是。

    【讨论】:

    • 嗨!谢谢你的帮助。因此,对于从 ActivityA 到 ActivityB 的过渡,它是可以的 (overridePendingTransition(R.anim.abc_slide_in_bottom, 0); 但从 ActivityB 到 ActivityA 它不能正常工作:overridePendingTransition(0, R.anim.from_top_to_bottom) : schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromYDelta="0" android:toYDelta="-100%p" android:duration="@android:integer/config_mediumAnimTime"/>
    【解决方案2】:

    您需要使用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 之后调用完成)。

    您可以玩动画并创建/调整它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2011-11-30
      相关资源
      最近更新 更多