[英]Change Value in ObjectAnimator of AnimatorSet programmatically
I'd like to change a value of an ObjectAnimator
which is part of an AnimatorSet
, which is coded in Xml in a designated file in the animator directory.我想更改作为AnimatorSet
一部分的ObjectAnimator
的值,该值在动画师目录中的指定文件中以 Xml 编码。
I don't want to replace the Xml file with Java code, neither do I want to split it up.我不想用 Java 代码替换 Xml 文件,也不想拆分它。
Is it possible?是否可以?
example code:示例代码:
<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>
It's possible.这是可能的。
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..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.