有时候我们会遇到做百分比分布图的功能,这样的功能说难不难,说容易也不容易,主要是对绘制api和动画掌握的较为熟悉就行,下面就试试做下这个功能
首先看个效果图:
一、分析
实现这个效果要做哪些事:
1.画一个底部灰色圆
2.画绿色圆弧
3.画红褐色圆弧
动态圆弧的实现可以通过动画来实现,首先是绿色圆弧,只需要动态增加圆弧所需要经过的弧度即可,红褐色圆弧则就需要将起点设置在绿圆弧的结束位置,结束点在绿圆弧的起点角度
二、实现
按照上面的思路来做,第一步先画一个圆底,只需要一句话即可:
canvas.drawCircle(getWidth()/2,getHeight()/2,getWidth()/2-paintSize, cyclePaint);
然后做第二步画绿色圆弧,代码如下:
canvas.drawArc(rectF, 180, sweepAngle, false, paintFirst);
sweepAngle是需要动态改变的,通过动画实现:
public void startAnimation(){
ValueAnimator animator=ValueAnimator.ofFloat(0,progress);
animator.setDuration(1500);
animator.setInterpolator(new AccelerateInterpolator());
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float progress= (float) animation.getAnimatedValue();
sweepAngle=progress*360/100;