Search code examples
androidanimationtranslate-animation

Android Translate Animation not working properly


I created the following animation file full_translate.xml

<translate
    android:duration="1000"
    android:fillAfter="false"
    android:fromXDelta="0%p"
    android:toYDelta="-40%p" />

<translate
    android:duration="2000"
    android:fillAfter="false"
    android:fromXDelta="0%p"
    android:toXDelta="40%p" />

<translate
    android:duration="3000"
    android:fillAfter="false"
    android:fromXDelta="-0%p"
    android:toYDelta="40%p" />

<translate
    android:duration="4000"
    android:fillAfter="false"
    android:fromXDelta="0%p"
    android:toXDelta="-40%p" />

I want to move button from center to top then center to right, center to bottom and center to left. But the animation goes in totally wrong way. How can I play it in the correct order?


Solution

  • Finally got the solution. It works for me and could be helpful to others. The key was startOffSet :P

    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:toYDelta="-42%p" />
    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:startOffset="1200"
        android:toYDelta="42%p" />
    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:startOffset="2000"
        android:toXDelta="20%p" />
    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:startOffset="2800"
        android:toXDelta="-20%p" />
    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:startOffset="3600"
        android:toYDelta="42%p" />
    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:startOffset="4400"
        android:toYDelta="-42%p" />
    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:startOffset="5200"
        android:toXDelta="-20%p" />
    <translate
        android:duration="800"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:startOffset="6000"
        android:toXDelta="20%p" />