Анимация Android translate ImageView не работает должным образом

#android #animation #android-imageview #translate-animation

#Android #Анимация #android-imageview #перевести-анимация

Вопрос:

Я хотел бы перевести ImageView на вертикальную ось, а затем на горизонтальную.

Вот мой translate.xml код:

 <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:interpolator="@android:anim/linear_interpolator" >

    <translate
        android:fillAfter="true"
        android:fromYDelta="0%"
        android:toYDelta="180%"
        android:fromXDelta="50%"
        android:toXDelta="50%"
        android:duration="1500">
    </translate>

    <translate
        android:fillAfter="true"
        android:fromXDelta="0%"
        android:toXDelta="-200%"
        android:duration="1500">
    </translate>



    </set>
  

Код из Myactivity.java:

ImageView Img1 = (ImageView)findViewById(R.id.ImageView1);

 anim_translate = AnimationUtils.loadAnimation(getApplicationContext(),translate);

//load animation
Img1.startAnimation(anim_translate);
  

Я бы хотел, чтобы изображение перемещалось вниз, а затем переводилось влево, но оно перемещается только в левый угол, один раз.
Спасибо!

Комментарии:

1. Вы пытались разделить это на две анимации? Вы можете зарегистрировать прослушиватель, когда первая анимация будет завершена, а затем вы начнете вторую анимацию.

2. Теперь это решено, спасибо! Я добавил android: startOffset для каждой части анимации.

3. Вы можете поделиться окончательным решением, чтобы кто-нибудь другой мог его использовать 🙂

Ответ №1:

Решение заключается в:

 <translate 
    android:fromYDelta="0%" 
    android:toYDelta="170%" 
    android:fromXDelta="50%" 
    android:toXDelta="50%" 
    android:duration="1500" 
    android:fillAfter="true"> 
</translate> 

<translate 
    android:startOffset="1500" 
    android:fillAfter="true" 
    android:fromXDelta="0%" 
    android:toXDelta="-200%" 
    android:duration="1500"> 
</translate>