2016-03-22 11 views
0

Ich möchte ein ObjectAnimator programmatisch dass repräsentiert diese XML erstellen -Wie erstellt man ObjectAnimator mit valueType - pathType programmgesteuert?

<objectAnimator 
     android:duration="@integer/eye_anim_duration" 
     android:interpolator="@android:interpolator/anticipate_overshoot" 
     android:propertyName="pathData" 
     android:repeatCount="0" 
     android:repeatMode="restart" 
     android:valueFrom="@string/big" 
     android:valueTo="@string/small" 
     android:valueType="pathType" 
     /> 

In ähnlicher Weise, wie ich eine ObjectAnimator für Farbwechsel schaffen -

ValueAnimator animator = ObjectAnimator.ofInt(vector, "fillColor", getResources().getColor(R.color.light_green), getResources().getColor(R.color.red)); 
     animator.setDuration(3000); 

Antwort

0

Mit PathAnimatorInflater Klasse und Umschreiben der setupAnimatorForPath zu Akzeptieren Sie Strings statt TypedArray ist es möglich. Hier ist eine Methode, die diesen verwendet -

private ObjectAnimator getAnimator(AnimatedVectorDrawable vector, int in, int out, int delay) { 
    ObjectAnimator animator = new ObjectAnimator(); 
    animator.setTarget(vector); 
    animator.setPropertyName("pathData"); 
    TypeEvaluator evaluator = PathAnimatorInflater.setupAnimatorForPath(animator, getResources().getString(in), getResources().getString(out)); 
    if (evaluator == null) { 
     return null; 
    } 
    animator.setEvaluator(evaluator); 
    animator.setRepeatMode(ValueAnimator.REVERSE); 
    animator.setDuration(3000); 
    animator.setStartDelay(delay); 
    return animator; 
} 

Aber zu verwenden, um dies mit AnimatedVectorDrawable es auch einige Änderungen in Vektor-Klassen benötigt.

Verwandte Themen