Как выполнить несколько анимаций перевода последовательно?
Я хочу запустить три трансляционных анимации, показанных ниже последовательно. т.е. после завершения анимации перевода, начинается вторая анимация перевода. Тем не менее, они запускаются одновременно.
Кроме того, эта анимация будет использоваться для переопределения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()
, запустит третью анимацию.