图表网上有很多第三方工具,但是往往都会受到一些限制,于是用canvas画pieChart.

Java代码 //定义一些常量 intareaX=1; intareaY=22; intareaWidth; intareaHight; //pie上的颜色 intcolors[]; //占的比例 intpercent[]; inttempAngle=0; privateBitmapbitmap; /** *屏幕中间点的X、Y坐标 */ privatefloatcenterX,centerY; /** *大园半径 */ privatefloatbigR; privateCanvascanvas; BitmapOverlayBitmap; /** *屏幕的宽 */ privateintwidth; /** *屏幕的高 */ privateintheight; @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); this.canvas=canvas; centerX=width/2; centerY=height/2; bigR=(width-80)/2; areaWidth=width-2; areaHight=height-2; Paintpaint=newPaint(); paint.setColor(Color.RED); paint.setStyle(Style.FILL); paint.setAntiAlias(true); paint.setStrokeWidth(1); canvas.save(); canvas.rotate(mDegree); canvas.translate(centerX,centerY); for(intj=0;j<percent.length;j++){ paint.setColor(colors[j]); canvas.drawArc(newRectF(-bigR,-bigR,bigR,bigR),tempAngle,percent[j], true,paint);tempAngle+=percent[j]; } canvas.restore(); }

把在饼图上占的各个部分,由在初始化此view时传参,代码便灵活使用

Java代码 int[]colors=newint[]{Color.rgb(255,0,68),Color.rgb(4,227,66),Color.rgb(120,120,120),Color.rgb(255,145,0)}; int[]percent=newint[]{50,140,100,70}; PieViewpieView=newPieView(this,width,height,colors,percent);

percent 在饼图上所占的比例,无论里面有几个元素,总和都必须是360,不然画出来是有空缺的.

Java代码 intmDegree=0;//偏移量 intmPreDegree=0;//上次偏移量 publicvoidcalcDegree(booleanbFlag){ if(mDegree>=360){ mDegree-=360; } if(mDegree<0){ mDegree+=360; } mPreDegree=mDegree; } @Override publicbooleanonKeyDown(intkeyCode,KeyEventevent){ //TODOAuto-generatedmethodstub switch(keyCode){ //顺时针转动 caseKeyEvent.KEYCODE_DPAD_LEFT: mDegree-=6; calcDegree(false); postInvalidate(); break; //逆时针转动 caseKeyEvent.KEYCODE_DPAD_RIGHT: mDegree+=6; calcDegree(false); postInvalidate(); break; default: break; } returnsuper.onKeyDown(keyCode,event); }