Сделать новый вид активности за старым во время перехода
То, что я пытаюсь сделать, это переопределить анимацию начала работы.
Анимация должна создавать впечатление, что старая активность находится поверх новой активности, а затем скользит вниз и выходит из экрана, чтобы показать новую активность. Я пробовал несколько способов, таких как использование overridePendingTransition(startAnim, exitAnim)
Но проблема в том, что они оба ожидают в одном и том же графике. Итак, overridePendingTransition(R.anim.hold, R.anim.exit_slide_down);
Вы никогда не видите анимацию выхода, потому что новая активность находится сверху. Может ли это быть достигнуто с использованием рамки?
![enter image description here]()
Ответы
Ответ 1
Собственно, я нашел свойство под названием android:zAdjustment
в файлах анимации.
Если я поставлю android:zAdjustment="bottom"
в hold.xml
(экран 2) и android:zAdjustment="top"
в push_down_out.xml
(экран 1), тогда я могу получить желаемый эффект.
Это касается проблемы порядка z (я предположил, что это была проблема с таймингами анимации, поэтому я лаял неправильное дерево).
Джон
Ответ 2
Я пытаюсь решить ваше решение в примере проекта, и я получил его работу с этим кодом:
Вызвать анимацию с помощью:
startActivity(new Intent(this, Activity2.class));
overridePendingTransition(R.anim.push_down_in,R.anim.push_down_out);
R.anim.push_down_in:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="300"/>
</set>
R.anim.push_down_out:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="300"/>
</set>
Ответ 3
Решение, которое работает для меня:
R.anim.exit_slide_down
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:zAdjustment="top">
<translate android:fromYDelta="0"
android:toYDelta="100%p"
android:duration="600" />
</set>
... и затем
Intent intent = new Intent(activity, SecondActivity.class);
startActivity(intent);
activity.overridePendingTransition(0, R.anim.exit_slide_down);