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
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:
- 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.
- Ich kann den gepunkteten Stil im Diagramm nicht festlegen.
Kann jemand dabei helfen. Danke im Voraus!
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
yep - das wäre eine Lösung – Katharina
Diese Lösung funktioniert nicht. Der Graph wird immer noch mit der zuletzt gesetzten Farbe gezeichnet. – SKP