Порядок перехода активности Android - PullRequest
2 голосов
/ 08 февраля 2012

В упражнении я пытаюсь сделать пользовательский переход между двумя Activities.Я хочу, чтобы текущий Activity уменьшился до половины размера, а затем сделал бы, чтобы значения x выполнили преобразование масштаба, так что это выглядит так, как будто Activity вращается в 3-D.Затем, после того, как эта анимация закончится, я хочу, чтобы та же самая анимация в совершенно противоположном порядке происходила на новом Activity.

Мой вопрос, как я могу сделать паузу в анимации, чтобыанимация для ввода Activity не начинается до тех пор, пока не закончится анимация выхода?Я должен использовать метод overridePendingTransition, поэтому все передаваемые анимации должны иметь значения int от R.anim.В противном случае было бы легко использовать AnimationListener.Но я не могу придумать, как это сделать.

Есть идеи?

РЕДАКТИРОВАТЬ: С тех пор я понял, так что вы можете проверить ответы!

1 Ответ

4 голосов
/ 13 июня 2012

Для тех, кто пытается сделать то же самое, я понял это. Секрет заключается в использовании Android: startOffset в XML. Код выглядит следующим образом:

Анимация выхода:

<set xmlns:android="http://schemas.android.com/apk/res/android">
  <scale
      android:fromXScale="1.0" android:toXScale="0.8"
      android:fromYScale="1.0" android:toYScale="0.8"
      android:pivotX="50%p" android:pivotY="50%p"
      android:interpolator="@android:anim/accelerate_interpolator"
      android:duration="100" />
  <scale
      android:fromXScale="1.0" android:toXScale="0.0"
      android:fromYScale="1.0" android:toYScale="1.0"
      android:pivotX="50%p" android:pivotY="50%p"
      android:interpolator="@android:anim/accelerate_interpolator"
      android:duration="150"
      android:startOffset="100" />
</set>

Анимация входа:

<set xmlns:android="http://schemas.android.com/apk/res/android">
  <scale
      android:fromXScale="0.0" android:toXScale="1.0"
      android:fromYScale="1.0" android:toYScale="1.0"
      android:pivotX="50%p" android:pivotY="50%p"
      android:interpolator="@android:anim/accelerate_interpolator"
      android:duration="150"
      android:startOffset="250" />

  <scale
      android:fromXScale="0.8" android:toXScale="1.0"
      android:fromYScale="0.8" android:toYScale="1.0"
      android:pivotX="50%p" android:pivotY="50%p"
      android:interpolator="@android:anim/accelerate_interpolator"
      android:duration="100"
      android:startOffset="400" />
</set>

Тогда код Java:

startActivity(new Intent(this, YourNextActivity.class));
overridePendingTransition(R.anim.enter_anim, R.anim.exit_anim);

Это создает плавную, своевременную анимацию, из-за которой создается впечатление, что следующее создаваемое действие находится на «спине» текущего действия.

...