Сделать новую активность за старой в процессе перехода

То, что я пытаюсь достичь, – переопределить анимацию начала работы.

Анимация должна создавать впечатление, что старая активность находится поверх новой активности, а затем скользит вниз и выходит из экрана, чтобы показать новую активность. Я пробовал несколько способов, таких как использование overridePendingTransition(startAnim, exitAnim) Но проблема в том, что они оба ожидают на той же временной шкале. Итак, overridePendingTransition(R.anim.hold, R.anim.exit_slide_down); Вы никогда не видите анимацию выхода, потому что новая активность находится сверху. Может ли это быть достигнуто с использованием структуры?

Введите описание изображения здесь

Solutions Collecting From Web of "Сделать новую активность за старой в процессе перехода"

Я пытался решить ваше решение в примере проекта, и я получил его работу с этим кодом:

Вызвать анимацию с помощью:

 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> 

Фактически, я нашел свойство под названием android:zAdjustment в файлах анимации.

Если я поставлю android:zAdjustment="bottom" в hold.xml (экран 2) и android:zAdjustment="top" в push_down_out.xml (экран 1), тогда я могу получить желаемый эффект.

Это касается проблемы порядка z (я предположил, что это была проблема с анимационными таймингами, поэтому я лаял неправильное дерево).

Джон

Решение, которое работает для меня:

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