2016-06-27 14 views
2

グラフをアニメーション化しようとしています。つまり、グラフの曲線が描画されていることがわかります。キャンバスを使用したAndroidグラフのアニメーション

enter image description here

現在、私はコードの下に使用してグラフをアニメーション化することができる午前:

 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)); 
} 

そして、私のonDrawメソッド内:

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

私グラフは次のようになりますこれに関する以下の質問があります:

  1. カーブの個々の部分に色を設定できません。曲線の最上部の黄色、2番目の部分の緑など 色を設定しようとしましたが、グラフ全体が最後に設定された色を選択していて、最後に設定された色のみで描画されています。私の場合は青。
  2. グラフに点線のスタイルを設定できません。

誰かがこれを助けることができますか?前もって感謝します!

答えて

0

色/線のスタイルごとに1つのパスが必要です。複数のパスがある場合(2番目のパスが最初のパスの終点で滑らかな遷移を開始する)、異なるパスを設定することができます。

+0

つまり、パスとペイントの配列リストですか? _onDraw()_内部では、_path_と_paint_color_を取得するためにループを実行する必要がありますか?それは助けになるだろうか?提案してください。 – SKP

+0

これは解決策になります – Katharina

+0

この解決策は機能しません。グラフはまだ最後に設定された色で描画されています。 – SKP

関連する問題