2016-06-27 14 views
2

Ich versuche, mein Diagramm zu animieren, was bedeutet, dass die Kurve des Diagramms gezeichnet werden kann. Die Grafik sieht wie folgt aus:Android Grafikanimation mit Leinwand

enter image description here

Derzeit bin ich in der Lage die Grafik mit folgenden Code zu animieren:

 public void startAnimation() {  
     // Measure the path 
     PathMeasure measure = new PathMeasure(mAnimationPath, false); 
     length = measure.getLength(); 

     ObjectAnimator animator = ObjectAnimator.ofFloat(EmotionsGraphView.this, "phase", 1.0f, 0.0f); 

     animator.setDuration(1000); 
     animator.start(); 
     } 
    } 


//is called by animtor object 
public void setPhase(float phase) { 

Log.d("pathview", "setPhase called with:" + String.valueOf(phase)); 
mAnimationPaint.setPathEffect(createPathEffect(length, phase, 0.0f)); 
        mAnimationPaint.setColor(Color.RED); 
        invalidate();//will calll onDraw 
       } 

private static PathEffect createPathEffect(float pathLength, float phase, float offset) { 
return new DashPathEffect(new float[]{pathLength, pathLength}, 
          Math.max(phase * pathLength, offset)); 
} 

Und in meinem OnDraw-Methode:

@Override 
protected void onDraw(Canvas canvas) { 
canvas.drawPath(mAnimationPath, mAnimationPaint); 
} 

I Haben Sie Fragen hierzu:

  1. Ich kann Farben für den einzelnen Teil der Kurve nicht einstellen, dh. Gelb für den oberen Teil der Kurve, grün für den zweiten Teil usw. Ich habe versucht, die Farbe einzustellen, aber der ganze Graph ist die letzte eingestellte Farbe und es wird nur in der letzten eingestellten Farbe gezeichnet, dh. Blau in meinem Fall.
  2. Ich kann den gepunkteten Stil im Diagramm nicht festlegen.

Kann jemand dabei helfen. Danke im Voraus!

Antwort

0

Sie benötigen einen Pfad für jede Farbe/Linienart. Wenn Sie mehrere Pfade haben (der zweite Pfad beginnt am Endpunkt des ersten Pfads, um einen fließenden Übergang zu erzielen), können Sie für jeden Pfad eine andere Farbe und damit einen anderen Stil festlegen.

+0

Also heißt es, eine Array-Liste von Pfad und Farbe? Und in _onDraw() _ muss ich eine Schleife laufen lassen, um den _path_ und _paint_color_ zu erhalten? Wird das helfen? Bitte vorschlagen. – SKP

+0

yep - das wäre eine Lösung – Katharina

+0

Diese Lösung funktioniert nicht. Der Graph wird immer noch mit der zuletzt gesetzten Farbe gezeichnet. – SKP