Подтвердить что ты не робот

Сделать новый вид активности за старым во время перехода

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

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

enter image description here

4b9b3361

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