Android:如何使用另一个Activity进行垂直活动转换

时间:2015-07-01 15:04:59

标签: android android-activity android-transitions

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

  1. 活动1 - >活动2:活动2从下到上的垂直过渡(进展)
  2. 当我回到Activity1:Activity2从上到下的垂直过渡(进展)
  3. 更新

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

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

    活动2 - &gt; 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"/>
    

2 个答案:

答案 0 :(得分:1)

使用overridePendingTransition更改活动动画。

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

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也是。

答案 1 :(得分:0)

您需要使用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>

然后,当你开始你的活动(使用startActivity)之后,立即调用overridePendingTransition(int enterAnim,int exitAnim)。

完成ActivityB(调用完成后和在overridePendingTransation之后)可以实现相同的功能。

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