2015-05-14 42 views
11

Ich möchte meine AnimatedVectorDrawable zur Laufzeit animieren, ohne .xml Dateien zu verwenden. Eigentlich bin ich mit .xml Dateien genauso wie Dokumentation der Proben zeigt:Animation zur Laufzeit hinzufügen

AnimatedVectorDrawable

Also, ich habe vector_drawable.xml enthält <vector> mit verschachtelten <group> und <path>, die eine Form definiert.

Für diesen Vektor habe ich animated_vector_drawable.xml enthält <animated-vector> mit android:animation assanged zu <target>.

Der letzte Schritt ist eine Animationsdatei rotation.xml mit <objectAnimator> definieren, die durch animated_vector_drawable.xml

verwendet wird Alles funktioniert gut, aber das Problem erscheint, wenn ich viele verschiedene Formen erstellen müssen (Vektoren) mit vielen verschiedenen oder ähnlichen Animationen, weil dies viele .xml Dateien generiert.

  1. Ich kann nicht bereit sind und bereit <vector> von einer .xml Datei in eine andere (eine Art <include>-Tag), so muss ich den gleichen Code auf eine andere Dateien kopieren. Es ist sehr nervig.

  2. Wenn ich die gleiche Animation für einige <target> Elemente verwenden möchte, aber jede Animation muss f.e. verschiedene Verzögerung oder jede Eigenschaft Wert (alpha, rotation, interpolator ...), muss ich neu erstellen .xml Datei enthält <objectAnimator> mit einem Wert geändert, anstatt die gleiche, eine Datei mit geänderten Eigenschaft Wert zu verwenden. Es ist auch nervig.

  3. entdeckte ich, dass ich ObjectAnimator und alpha & fillColor für AnimatedVectorDrawable einstellen können, aber es gibt ein Problem, wenn ich translateX, es ist translateY, rotation ändern möchten oder andere Eigenschaften. Gibt es eine Möglichkeit, dies ohne .xml zu tun. Ich will nur den Zugang zu <group>

+2

Wie machen Sie das? "Ich habe entdeckt, dass ich ObjectAnimator verwenden und alpha & fillColor für AnimatedVectorDrawable programmgesteuert festlegen kann" – stack

+3

Ja. Ich würde auch gerne wissen, wie man hier programmatisch auf den ObjectAnimator zugreift. –

+0

Ich bin auch interessiert zu wissen, ob es eine Lösung für diese –

Antwort

0

Constructor haben, dass Sie mit absoluten Werten erzeugt Animation verwendet (Pixel).

TranslateAnimation in = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 1.0f, 
Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f); 

Verwenden Sie Animation.RELATIVE_TO_PARENT, um Ihre Anforderungen zu erfüllen.

Verwandte Themen