android: windowExitAnimation не работает? - PullRequest
0 голосов
/ 29 мая 2020

Как упоминается Google в этом https://youtu.be/N_x7SV3I3P0

view. Анимация по-прежнему используется для 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 (Purple). Аналогично при возврате от Activity2 к Activitiy1, отображается только переход при входе. Переход к выходу не может быть инициирован.

Результат показан ниже.

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 Ответ

2 голосов
/ 29 мая 2020

Похоже, мне нужно использовать вместо этого

<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 Действия (хотя странно, что 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>

windowEnterAnimation работает, но не windowExitAnimation хотя.

...