如何在Android中实现从上到下的动画效果?

16
我能够在跳转到下一个界面时实现从底部到顶部的动画效果,但是现在当我按返回键时,我使用同样的代码实现从顶部到底部的动画效果,但它总是从底部到顶部运行。所以我的问题是,在Android设备上按下返回按钮后如何实现从顶部到底部的动画效果?
请参见以下代码。

我在使用 Intent 进行 Activity 之间的转换时使用它。

overridePendingTransition( R.anim.slide_in_up, R.anim.slide_out_up );

并且xml文件是:slide_in_up.xml

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

并且 slide_out_up.xml 是

 <?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%p" android:toYDelta="-100%p"
android:duration="@android:integer/config_longAnimTime"/>
4个回答

20

只需在slide_out_up.xml中将-100更改为100(删除负号)即可。

@Override
public void onBackPressed() {
    finish();
    overridePendingTransition(R.anim.enter_anim, R.anim.exit_anim);
}

请参考以下链接:http://stackoverflow.com/questions/9306513/exchange-information-after-bluetooth-pairing-with-authentication-only-android - shyam
嗨Hesam,想问一个问题,请参考上面的链接,如果您曾经使用过蓝牙。在通过蓝牙配对了两个设备之后,如何开始交换配置文件信息,并在通知中收到授权请求?只有在接受后才能交换配置文件信息。我已经卡在这里三天了,请帮忙...谢谢。 - shyam
1
嗨,Shyam,我看到了你的链接,但不幸的是,我不知道。如果我找到了结果,我会告诉你。抱歉 :) - Hesam
好的,Hesam,我确信...你正在帮助我...所以我非常感激你... :) - shyam

6

我在我的平板电脑4.0.3上工作。

slide_out_up.xml

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromYDelta="0%p"
        android:toYDelta="-100%p" />

</set>

slide_in_up:xml:

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromYDelta="-100%p"
        android:toYDelta="0%p" />

</set>

style.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="DialogAnimationOutUpInUp">
        <item name="android:windowEnterAnimation">@anim/slide_in_up</item>
        <item name="android:windowExitAnimation">@anim/slide_out_up</item>
    </style>

</resources>

5
我刚刚使用了两个额外的XML文件来实现它,类似于:
向上滑动:100到0和0到-100
向下滑动:-100到0和0到100
这样效果很完美。

4
您可以覆盖返回按钮的按下行为,并设置您想要的适当动画,如下所示:

您可以通过以下方式实现:

@Override
public void onBackPressed() {
    finish();
    overridePendingTransition(R.anim.enter_anim, R.anim.exit_anim);
}

更改 overridePendingTransition 中的动画,以适应您想要的动画。


我按照你说的做了,但它仍然给出相同的动画,即从底部到顶部,但我想要从顶部到底部的动画,在我按下返回按钮时。我反转了overridePendingTransition(R.anim.slide_out_up, R.anim.slide_in_up)。 - shyam
我和你一样,只不过我的“slide_out”动画是android:fromYDelta="0%p" android:toYDelta="100%p"。在这里它运行得很好。当你要调用下一个Activity时,你是否在Intent中添加了额外的Intent.FLAG_ACTIVITY_NO_ANIMATION?是否发生了任何动画? - Alesqui

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接