2014-02-14 13 views
10

Ich habe diese Zeile auch verwendet Bild in meinem Text hinzufügenAnsicht: android:drawableLeft="@drawable/ic_launcher" in meiner XML-Datei.wie man animation zu TextView hinzufügt

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:drawablePadding="5dp" 
    android:gravity="center_vertical" 
    android:text="@string/hello_world" 
    android:textSize="14sp" 
    android:textStyle="bold" 
    android:drawableLeft="@drawable/ic_launcher" 
    > 

</TextView> 

Jetzt möchte ich diese Zeichnungsanimation hinzufügen. Ich weiß nicht, wie ich auf dieses Bild zugreifen kann.

Irgendwelche Hilfe? Dank im Voraus

+0

Verwendung setCompoundDrawables, so scheint es, Es gibt keinen Getter für Compound-Drawables – pskink

+0

10 Können Sie ein wenig mehr erklären? Wie soll ich das benutzen? –

+0

setCompoundDrawables verwenden (Drawable left, Drawable top, Drawbar rechts, Drawable bottom) pass null für top, right und bottom Drawable, so setzt man nur linkes Drawable – pskink

Antwort

10

Wenn Sie das Zeichen im XML-Format festlegen, können Sie nicht wie bei einem ImageViewgetDrawable() darauf zugreifen. Stattdessen unterlassen Sie es von Ihrem XML und tun es in Ihrem Activity/Fragment:

TextView tv = (TextView) view.findViewById(R.id.textView1); 
AnimationDrawable d = (AnimationDrawable) getResources().getDrawable(R.drawable.ic_launcher); 
tv.setCompoundDrawables(d, null, null, null); 
d.start(); 

Sofern Ihr ziehbar ic_launcher kann wie eine AnimationDrawable animiert werden, sollte dies die Animation starten. Rufen Sie d.stop() auf, um die Animation zu beenden.

+0

Kannst du bitte das Zeichen zeigen, das du benutzt hast? Und wie kann ich die Animation invertieren? –

5

um einfache Animationen wie Rotation machen Sie so etwas wie dies tun können:

Angenommen @drawable/ic_launcher ein ziehbar ist, dass Sie animieren möchten.
definieren some_drawable.xml mit den entsprechenden Werten:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <rotate 
      android:drawable="@drawable/ic_launcher" 
      android:pivotX="50%" 
      android:pivotY="50%" 
      android:fromDegrees="0" 
      android:toDegrees="180" /> 
    </item> 
</layer-list> 

Ordnen Sie diese ziehbar als Verbindung eine Ihr Textview:

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:drawablePadding="5dp" 
    android:gravity="center_vertical" 
    android:text="@string/hello_world" 
    android:textSize="14sp" 
    android:textStyle="bold" 
    android:drawableLeft="@drawable/some_drawable" 
    > 

Animation zu starten:

int MAX_LEVEL = 10000; 

Drawable[] myTextViewCompoundDrawables = myTextView.getCompoundDrawables(); 
for(Drawable drawable: myTextViewCompoundDrawables) { 

    if(drawable == null) 
     continue; 

    ObjectAnimator anim = ObjectAnimator.ofInt(drawable, "level", 0, MAX_LEVEL); 
    anim.start(); 
} 
+0

Woher kommt die 10000? –

Verwandte Themen