Анимация перехода не работает в ландшафтном режиме

Я пытаюсь анимировать переходы между действиями в моем приложении. У меня есть right_to_left.xml, который работает на книжной ориентации экрана.

Вот тут right_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_shortAnimTime"
    android:fromXDelta="100%"
    android:interpolator="@android:anim/linear_interpolator"
    android:toXDelta="0" />
</set>

Вот right_to_left_slide_out.xml (чтобы выдвинуть предыдущее действие при переходе.)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_shortAnimTime"
    android:fromXDelta="0"
    android:interpolator="@android:anim/linear_interpolator"
    android:toXDelta="-100%p" />
</set>

Я использовал его после startActivity() и не было никаких проблем в портретном режиме.

Но я добавил опцию для изменения ориентации экрана в ландшафтный режим.

Если включен ландшафтный режим, я устанавливаю запрошенную ориентацию с кодом ниже в onCreate ().

//SCREEN ORIENTATION
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Это хорошо работает, активность создается в ландшафтном режиме без каких-либо проблем. Но когда я пытаюсь запустить действие с помощью overridePendingTransition(R.anim.right_to_left, R.anim.right_to_left_slide_out), который работает в портретном режиме, анимация перехода не отображается в ландшафтном режиме.

Я что-то пропустил?

РЕДАКТИРОВАТЬ: я пытался создать новый анимационный XML-файл, который работает с YDelta. Это тоже не сработало.

1 ответ

Анимация не воспроизводится, потому что Android Studio не отображает виды, которые не установлены на Видимый или Невидимый при запуске приложения. Проблема в том, что ваш пейзажный вид еще не отображается, когда анимация начинает воспроизводиться. Он визуализирует его на месте и полностью пропускает анимацию.

Чтобы проверить эту теорию, просто добавьте к своей деятельности версию вашего ландшафтного макета с помощью и установите для нее значение invisible. Затем запустите приложение. Посмотрите, играет ли анимация. Если это так, то эта теория верна, и мы можем попытаться найти решение.

Удачи.

Другие вопросы по тегам