Значение Chage в ObjectAnimator AnimatorSet программно
Я хотел бы изменить значение ObjectAnimator
которая является частью AnimatorSet
, который закодирован в Xml в указанном файле в каталоге аниматора.
Я не хочу заменять файл Xml кодом Java, и при этом я не хочу делить его.
Является ли это возможным?
пример кода:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:valueFrom="1.0"
android:valueTo="0.0"
android:propertyName="alpha"
android:duration="0" />
<objectAnimator
android:valueFrom="-170" <!-- I want to change this value on run time -->
android:valueTo="0"
android:propertyName="rotationY"
android:duration="@integer/anim_length" />
<objectAnimator
android:valueFrom="0.0"
android:valueTo="1.0"
android:propertyName="alpha"
android:startOffset="@integer/anim_length_half"
android:duration="0" />
</set>
1 ответ
Решение
Возможно.
AnimatorSet animatorSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.anim_yours);
List<Animator> animators = animatorSet.getChildAnimations();
for (int i = 0; i < animators.size(); i++) {
Animator animator = animators.get(i);
if (animator instanceof ObjectAnimator) {
ObjectAnimator objectAnimator = (ObjectAnimator) animator;
if ("rotationY".equals(objectAnimator.getPropertyName())) {
float fromValue = -100;
float toValue = 0;
objectAnimator.setFloatValues(fromValue, toValue);
}
}
}
// and you use changed AnimoatorSet..