【问题标题】:overridePendingTransition shows enter animation onlyoverridePendingTransition 仅显示进入动画
【发布时间】:2012-07-02 07:27:02
【问题描述】:

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

转场动画如下:

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

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);

谢谢。

【问题讨论】:

  • &lt;item name="android:windowIsTranslucent"&gt;false&lt;/item&gt;解决我的问题,也许你可以试试。

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


【解决方案1】:

在方法overridePendingTransition 上设置两个动画并在您调用startActivity 之后调用finish

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

【讨论】:

  • @Luksporg 我之前试过这个,它在目标 2.X 上完美运行。但是,我看不到它在 4.0 模拟器上工作。有什么原因吗?
  • @M.ES 根本不工作还是又不完整了?我刚刚测试了我的代码并且动画似乎可以工作(输入动画至少可以工作)但是旧的活动在制作动画时会留下一些帧,但我认为这是因为我的计算机较弱而无法使模拟器显示动画足够快。
  • @Laksporg 在 4.0 模拟器上,进入和退出动画都出现重叠。在 2.X 上完美运行。你认为这种重叠不会出现在真正的 4.X 设备上吗?
  • @M.ES 我不知道这是因为 ICS 还是因为模拟器。我没有带 ICS 的真实设备来进行测试。
  • @Laksporg 非常感谢您的回答。 :)
【解决方案2】:

这里也不行。我修复了它,创建了一个 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" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 2020-07-15
    相关资源
    最近更新 更多