使用canvas

时间:2016-06-27 14:04:34

标签: android animation canvas graph colors

我正在尝试为我的图形设置动画,这意味着可以看到图形曲线被绘制。该图看起来像这样:

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. 我无法在图表中设置虚线样式。
  3. 有人可以帮忙吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

每种颜色/线条样式都需要一个路径。如果您有多条路径(第二条路径从第一条路径的端点开始以进行平滑过渡),您可以为每条路径设置不同的颜色,因此设置不同的样式。