android:windowExitAnimation无法正常工作吗?

时间:2020-05-29 06:32:10

标签: android animation android-activity transition

如Google在此https://youtu.be/N_x7SV3I3P0

中所述

view.animation仍然是Windows过渡动画的方式。

因此,我使用

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:windowAnimationStyle">@style/WindowAnimations</item>
    </style>

    <style name="WindowAnimations">
        <item name="android:windowEnterAnimation">@anim/enter_activity</item>
        <item name="android:windowExitAnimation">@anim/exit_activity</item>
    </style>

只有从Activity1(Hello World)到Activitity2(紫色)时,我才进入enter转换。从Activity2返回到Activitiy1时类似,仅显示enter转换。退出转换永远不会触发。

结果如下所示。

enter image description here

好像android:windowExitAnimation无效吗? (即,如果我删除它,效果是一样的。)

要解决此问题,在我的Activity2中,我改用overridePendingTransition(R.anim.enter_activity, R.anim.exit_activity),如下所示。

class Main2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        overridePendingTransition(R.anim.enter_activity, R.anim.exit_activity)
    }

    override fun finish() {
        super.finish()
        overridePendingTransition(R.anim.enter_activity, R.anim.exit_activity)
    }
}

然后我得到想要的结果。

enter image description here

android:windowExitAnimation中是否存在错误?还是我想念什么?


p / s:我的过渡动画XML如下

enter_activity.xml

<set android:shareInterpolator="false"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="0.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="2000" />
</set>

exit_activity.xml

<set android:shareInterpolator="false"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="0.0"
        android:fromYScale="1.0"
        android:toYScale="0.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="2000" />
</set>

1 个答案:

答案 0 :(得分:3)

看起来我需要改用以下内容

gcloud builds submit --config deployment/staging/build.yaml

以下内容应该用于打开应用程序或关闭应用程序(或使应用程序后台运行),而不是用于打开其他Android活动(尽管dir:可以用于打开活动,这很奇怪,并且干扰(混合)<style name="WindowAnimations"> <item name="android:activityOpenEnterAnimation">@anim/enter_activity</item> <item name="android:activityOpenExitAnimation">@anim/exit_activity</item> <item name="android:activityCloseEnterAnimation">@anim/enter_activity</item> <item name="android:activityCloseExitAnimation">@anim/exit_activity</item> </style> android:windowEnterAnimation

android:activityOpenEnterAnimation

android:activityCloseEnterAnimation有效,但<style name="WindowAnimations"> <item name="android:windowEnterAnimation">@anim/enter_activity</item> <item name="android:windowExitAnimation">@anim/exit_activity</item> </style> 无效。