2016-12-26 7 views
1

Я пытаюсь анимировать 3 транслировать анимации последовательно. Я в основном хочу, чтобы мой фрагмент диалога перемещался снизу вверх, а затем немного перемещался вниз, достигая вершины экрана, а затем снова перемещался в верхнюю часть экрана. Вот что я делаю:Последовательная анимация перевода не работает должным образом

slide_bottom_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:duration="300" 
     android:fromYDelta="100%p" 
     android:toYDelta="0"/> 

    <translate 
     android:startOffset="300" 
     android:duration="300" 
     android:fromYDelta="0" 
     android:toYDelta="10%p"/> 

    <translate 
     android:startOffset="600" 
     android:duration="300" 
     android:fromYDelta="10%p" 
     android:toYDelta="0"/> 
</set> 

и onCreateView() метод моего DialogFragment я установил:

getDialog().getWindow().getAttributes().windowAnimations = R.style.dialogAnimation; 

и вот в моем файле styles.xml dialogAnimation

<style name="dialogAnimation"> 
    <item name="android:windowEnterAnimation">@anim/slide_bottom_in</item> 
    <item name="android:windowExitAnimation">@anim/slide_top_out</item> 
</style> 

Но это не работает, как я и ожидал. Сначала он перемещается вверх , но не достигает вершины страницы, а затем он снова и снова перемещается вверх, но все же он не достигает вершины страницы, как ожидалось. После окончания анимации фрагмент немедленно перемещается в начало (без анимации). Любая идея о том, что может быть неправильным с моим xml?

Спасибо.

ответ

0

Я нашел решение.

Прежде всего, я не дал startOffset для первой анимации перевода. Вот почему он не достиг вершины. Во-вторых, мне нужно изменить fromYDelta и fromXDelta третьей анимации перевода. Ниже приведено решение:

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

    <translate 
     android:startOffset="1" 
     android:duration="400" 
     android:fromYDelta="100%p" 
     android:toYDelta="0"/> 

    <translate 
     android:startOffset="401" 
     android:duration="500" 
     android:fromYDelta="0" 
     android:toYDelta="7%p"/> 

    <translate 
     android:startOffset="901" 
     android:duration="500" 
     android:fromYDelta="0" 
     android:toYDelta="-7%p"/> 

</set> 

 Смежные вопросы

  • Нет связанных вопросов^_^