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 говорит:
Вычислить подсказку о том, как долго может длиться вся анимация в миллисекундах. Анимации могут быть написаны, чтобы заставить их работать в течение другой продолжительности, чем рассчитывается здесь, но, как правило, это должно быть точным.