2017-11-28 3 views
0
public void startAnimation() { 


     ValueAnimator anim = ValueAnimator.ofFloat(oldmSweepAngle, mEndAngle); 
     anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
      @Override 
      public void onAnimationUpdate(ValueAnimator valueAnimator) { 
       ProgressCircle.this.mSweepAngle = (Float) valueAnimator.getAnimatedValue(); 
        ProgressCircle.this.invalidate(); 
      } 
     }); 
     anim.setDuration(500); 
     anim.setInterpolator(new AccelerateDecelerateInterpolator()); 
     anim.start(); 

    } 

} 

Ich versuche, einen progressiven Kreis zu erstellen, der es ändert Fortschrittswert bei jedem Bluetooth Eingang vom Benutzer. Der Fortschrittswert aktualisiert das msEndangle, und daher wird der Fortschrittskreis mit start-Animation inkrementiert oder dekrementiert. Mein Problem ist, dass der Animator den Bogen nicht aktualisiert, sondern dass er von 0 jedes Mal neu startet, wenn ein neuer mEndangle/ProgressValue ankommt. Ich meine, wenn 1. progressValue 50 ist und 2. Progress Wert 55 ist, sollte der Animator von 50 animieren und auf 55 erhöhen, während 0 bis 50 farbig bleibt. Aber es beginnt von 0 bis 55 zu animieren. Bitte hilf mir.Wert Animator nicht von vorherigem Wert

Antwort

0

Der Code funktionierte schließlich, indem das mSweepAngle als statisch deklariert wurde. Ich konnte dann den vorherigen Wert von mSweepangle in oldmSweepangle speichern und so die Art der Animation ändern.