2015-04-14 2 views
2

У меня есть простой перевод анимации в XMLAndroid анимации почему он задерживается на срок

anim.xml

<Translate 
    xmlns:... 
    android:fromYDelta="100%p" 
    android:toYDelta="0%p" 
    android:duration="1500" /> 

и я использую его, чтобы скользить макет вверх от нижней части экрана:

View layoutStatus = activity.findViewById(R.id.layoutSettingsStatus); 
    layoutStatus.setVisibility(View.VISIBLE); 
    Animation a = AnimationUtils.loadAnimation(context, R.anim.slide_up); 
    layoutStatus.startAnimation(a); 

Но он не начинается до 1500 мс (или, возможно, дольше) после выполнения этого кода. Когда я изменяю продолжительность анимации от 1500 до 5000, она не выполняется до 5 секунд после выполнения кода. Свойство duration работает, для его перевода требуется столько времени, сколько нужно.

Его как android: продолжительность также применяется к android: startOffset, почему это?

ответ

0

Из ваших отрывков не могу сказать, почему это происходит, мне понадобится больше кода. Но проверьте этот класс ViewPropertyAnimator, он может сделать вашу жизнь и код проще в будущем. Пример использования в вашем случае:

layoutStatus.animate().translationY(toY).setDuration(1500); 
// toY is float and takes coordinates on the screen 

Все, что вам нужно в одной строке кода, как можно проще. Этот класс также содержит все доступные методы, такие как setStartDelay(), setInterpolator(), setListener() и т. Д. Существуют некоторые различия между TranslateAnimation и ViewPropertyAnimation/ObjectAnimation, которые я объяснил here.