2012-06-02 5 views
6

Ich bin neu bei Android. Ich versuche die horizontale Suchleiste zu animieren, konnte es aber bisher nicht tun. Ich möchte nur eine Animation, wo Suchleiste zeigt den Fortschritt in einer bestimmten Dauer sagen 1 min. Kann jemand vorschlagen/Ideen/Code-Snippet geben, wie soll ich die Standard-Suchleiste animieren?Wie Animation verwenden, um Suchleiste animieren

Welche Art von Animation wie objectanimator oder valueAnimation soll ich verwenden? Muss ich eine Laufmethode definieren (nicht sicher!), Um den Daumen zu animieren, um zur nächsten Position zu gehen?

Vielen Dank im Voraus.

Antwort

13

Eine Möglichkeit, es zu tun, ist durch eine ValueAnimator mit:

final SeekBar seekBar = findViewById(R.id.seekBar); 
ValueAnimator anim = ValueAnimator.ofInt(0,seekBar.getMax()); 
anim.setDuration(1000); 
anim.addUpdateListener(new AnimatorUpdateListener() { 

     @Override 
     public void onAnimationUpdate(ValueAnimator animation) { 
      int animProgress = (Integer) animation.getAnimatedValue(); 
      seekBar.setProgress(animProgress); 
     } 
    }); 

Eine andere Art und Weise (diese havent Test) konnte:

final SeekBar seekBar = findViewById(R.id.seekBar); 
ObjectAnimator anim = ObjectAnimator.ofFloat(seekBar, "progress", 0,seekBar.getMax()); 
anim.setDuration(10000); 
anim.start(); 
+0

Beachten Sie, dass beide vorgeschlagenen Methoden Honeycomb erfordern (API 11, auch bekannt als 3.0) oder später. –

+5

Beim Versuch, die zweite Option zu verwenden, die Seekbar war nicht auf die Ansicht in den Protokollen zu reagieren, erhielt ich den Warnfehler _ "Methode setProgress() mit dem Typ float nicht in Zielklasse android.widget.seekbar gefunden." _ Das ist Da die Art und Weise, wie die aktuelle Syntax eingerichtet wird, erwartet 'ObjectAnimator', dass die SeekBar-Instanz eine 'setProgress (float val)' Methode hat, aber ich nehme an, dass SeekBar nur eine 'setProgress (int val)' Methode hat. Um dies zu erreichen, benutze 'ObjectAnimator.ofInt' anstelle von' ObjectAnimator.ofFloat' im Umgang mit SeekBars –

+0

@MarquisBlount man, danke, ich habe das Problem "Methode setProgress() mit typ float nicht in Zielklasse X gefunden." und Ihr Kommentar war hilfreich :) –

Verwandte Themen