Как выполнить несколько анимаций перевода последовательно?

Я хочу запустить три трансляционных анимации, показанных ниже последовательно. т.е. после завершения анимации перевода, начинается вторая анимация перевода. Тем не менее, они запускаются одновременно.

Кроме того, эта анимация будет использоваться для переопределенияPendingTransition() в качестве параметра. Итак, я должен решить эту проблему, только используя XML-код.

Есть ли кто-нибудь, кто знает, что я должен делать?

<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">

<translate
    android:fromXDelta="100%p"
    android:toXDelta="-20%p"
    android:duration="1000" />

<translate
    android:fromXDelta="-20%p"
    android:toXDelta="20%p"
    android:duration="1000" />

<translate
    android:fromXDelta="20%p"
    android:toXDelta="0"
    android:duration="1000" />
</set>

Ответы

Ответ 1

Используйте android:startOffset для задержки анимации.

В вашем примере это должно делать то, что вы хотите:

<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">

    <translate
        android:fromXDelta="100%p"
        android:toXDelta="-20%p"
        android:duration="1000" />

    <translate
        android:startOffset="1000"
        android:fromXDelta="-20%p"
        android:toXDelta="20%p"
        android:duration="1000" />

    <translate
        android:startOffset="2000"
        android:fromXDelta="20%p"
        android:toXDelta="0"
        android:duration="1000" />
</set>

Ответ 2

Решение Кевина может работать, хотя я нашел, что время было несколько неточным.

Другой вариант - использовать пару объектов AnimationListener, прикрепленных к каждой из двух первых анимаций. Слушатель первой анимации в onAnimationEnd() запустит вторую анимацию. Слушатель для второй анимации, в onAnimationEnd(), запустит третью анимацию.