Android: Получить продолжительность анимации в коде

rotate_x.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/decelerate_interpolator" >

    <objectAnimator 
       android:valueFrom="180"
       android:valueTo="0"
       android:propertyName="rotationX"
       android:interpolator="@android:interpolator/accelerate_decelerate"
       android:duration="1000" >
    </objectAnimator>


</set>

Ниже код регистрирует -1 для logcat.

Log.e(TAG, "Animation duration : " + ((AnimatorSet) AnimatorInflater.loadAnimator(this, R.anim.rotate_x)).getDuration());

Почему это? Как я могу получить AnimatorSet продолжительность в коде.

1 ответ

Вы можете использовать метод computeDurationHint() из класса анимации.

long duration = 0;
for(Animation a : yourAnimatorSet.getChildAnimations())
    duration += a.computeDurationHint();

Javadoc говорит:

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

Другие вопросы по тегам