android开发分享Android自定义View实现饼状图带动画效果

一个简单的自定义view饼状图,加入了动画效果 先看一下效果 下面就直接上代码了 public class yidong2 extends appcomp

一个简单的自定义view饼状图,加入了动画效果

先看一下效果

Android自定义View实现饼状图带动画效果

下面就直接上代码了

  public class yidong2 extends appcompatactivity {    @override    protected void oncreate(bundle savedinstancestate) {      super.oncreate(savedinstancestate);      setcontentview(new pointview(this));    }       public class pointview extends view {      private int[] p1 = {0, 100, 200};    //存放弧度的数组      //定义存放颜色的数组      private int[] p2 = {color.green, color.yellow, color.red};          paint paint = new paint();       //画笔      private float k;            //弧度变动后的值         //定义矩形,用户确定描绘的饼状图位置      private final rectf rectf = new rectf(100, 100, 800, 800);         //定义      public pointview(context context) {        super(context);        paint.setstyle(paint.style.fill);    //设置画笔为填充        paint.setstrokewidth(10f);       //设置画笔宽度        paint.setantialias(true);        //抗锯齿           //属性动画        valueanimator animator = valueanimator.offloat(0, 360);        animator.setduration(1000);       //设置动画时间        animator.addupdatelistener(new valueanimator.animatorupdatelistener() {          @override          public void onanimationupdate(valueanimator animation) {            k = (float) animation.getanimatedvalue(); //获取变动后的值            invalidate();      //刷新布局          }        });        animator.start();  //启动动画      }         @suppresslint("drawallocation")      @requiresapi(api = build.version_codes.lollipop)      @override      protected void ondraw(canvas canvas) {        super.ondraw(canvas);        //这里做了不同颜色的范围判断,还可以进行封装,为了便于学习,就没有再次封装        if (k < p1[1]) {          shezhi(canvas, 0);        } else if (k < p1[2]) {          shezhi(canvas, 1);        } else {          shezhi(canvas, 2);        }      }         //动画方法,android的动画有三种,view动画,帧动画,属性动画,      //这里对动画方法进行简单的封装,只需要明白,如果存在多个颜色的话,在绘制第二个以后颜色时,每次都要先绘制先前所有颜色,再绘制当前颜色,即可理解,这也就是动画的基本逻辑。      private void shezhi(canvas canvas, int n) {        for (int i = 0; i <= n; i++) {          paint.setcolor(p2[i]);          canvas.drawarc(rectf, p1[i], k - p1[i], true, paint);        }      }    }  }

已经加入了详细的注释,同样的原理,还可以将动画加入到柱形图等等。

以上就是android开发分享Android自定义View实现饼状图带动画效果的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/addevelopment/901737.html

(0)
上一篇 2021年10月24日
下一篇 2021年10月24日

精彩推荐