2015-05-27 5 views
8

Ich habe einen Fortschrittsbalken Ansicht wie folgt aus:Android: Wie man horizontalen Fortschrittsbalken mit Interpolator machen?

<ProgressBar 
    android:id="@+id/progress_bar" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:max="100"/> 

Es dauert 3 Sekunden, so wie Interpolator verwenden Update reibungslos zu machen?

ObjectAnimator animation = ObjectAnimator.ofInt(what_is_in_here?); 
animation.setDuration(3000); // second 
animation.setInterpolator(new DecelerateInterpolator()); 
animation.start(); 

Ich schätze Ihre Hilfe sehr. Vielen Dank im Voraus.

Antwort

21

fand ich die Lösung aus:

progressBar = (ProgressBar) findViewById(R.id.progress_bar); 

ObjectAnimator animation = ObjectAnimator.ofInt(progressBar, "progress", 100, 0); 
animation.setDuration(3500); // 3.5 second 
animation.setInterpolator(new DecelerateInterpolator()); 
animation.start(); 

Hier ist eine detaillierte Erklärung:

eine Animation-Objekt erstellen:

ObjectAnimator animation = ObjectAnimator.ofInt(progressBar, "progress", 100, 0); 
  • progressBar: Verweis auf die ProgressBar in das Layout;
  • "Fortschritt": der Name der zu animierenden Eigenschaft;
  • 100: Startpunkt der Animation;
  • 0: Endpunkt der Animation.

und stellt eine Interpolation:

animation.setInterpolator(new DecelerateInterpolator()); 

Es ist möglich, verschiedene Interpolatoren für unsere Animation zu verwenden, wie zum Beispiel:

  • LinearInterpolator: wo die Änderungsrate konstant ist .
  • VerzögerungInterpolator: wo die Änderungsrate schnell beginnt und dann verlangsamt.

  • AccelerateInterpolator: wo die Änderungsrate langsam beginnt und dann beschleunigt.

  • OvershootInterpolator: wo die Änderung vorwärts geht und den letzten Wert überschreitet dann kommt zurück.

  • Für andere Interpolatoren überprüfen Sie die Schnittstelle android.view.animation.Interpolator.
+0

Große Antwort! Einfach, sauber und verständlich. Vielen Dank! –

+0

brauche auf Hilfe "Fortschritt" ist Eigenschaftsname bereits definiert oder benutzerdefiniert? wenn bereits definieren, was eine Liste von vordefinierten sind –

Verwandte Themen