Сделать новую активность позади старой во время перехода - PullRequest
36 голосов
/ 15 февраля 2012

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

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

enter image description here

Ответы [ 3 ]

31 голосов
/ 17 февраля 2012

На самом деле я обнаружил свойство под названием android:zAdjustment в файлах анимации.

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

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

Джон

30 голосов
/ 15 февраля 2012

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

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

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>  
7 голосов
/ 03 сентября 2013

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

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...