overridePendingTransition仅显示输入动画

时间:2012-07-01 17:38:23

标签: java android android-layout android-activity android-animation

当用户更改语言区域设置时,我想使用新的区域设置重新加载活动。我想在完成活动并再次启动时创建一个动画过渡。

过渡动画如下:

退出动画是将活动缩放到屏幕中心。 输入动画是从屏幕中心缩放活动。

finish();
overridePendingTransition(0, R.anim.scale_to_center);
Intent intent =new Intent(SettingsActivity.this, SettingsActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.scale_from_center, 0);

我的scale_to_center.xml是:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="1.0" android:toYScale="0"
        android:fromXScale="1.0" android:toXScale="0" 
        android:pivotX="50%" android:pivotY="50%"
        android:duration="500"/>
</set>

我的scale_from_center.xml是:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="0" android:toYScale="1.0"
        android:fromXScale="0" android:toXScale="1.0" 
        android:pivotX="50%" android:pivotY="50%"
        android:startOffset="500"
        android:duration="2000"/>
</set>

问题是只出现输入转换并且不显示退出转换。我试图在退出转换中添加延迟,但它也不起作用。

然而,当我将代码更改为仅为应用程序的退出设置动画时。它奏效了。

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

感谢。

2 个答案:

答案 0 :(得分:3)

在方法overridePendingTransition上设置两个动画,并在调用startActivity 之后调用 <:>

Intent intent = new Intent(SettingsActivity.this, SettingsActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.scale_from_center, R.anim.scale_to_center);
finish();

答案 1 :(得分:0)

它在这里也不起作用。我修复了它创建一个null_animation.xml:

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0%p"
android:toYDelta="0%p" />