您的位置:首页 > 其它

andriod饼图简单实现

2014-04-11 16:49 330 查看
接下来是饼图,依旧是简单实现,没办法菜鸟,以后改进吧。

效果图:



接下来是代码:

package mychart;

import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.graphics.Path.Direction;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.view.View;

public class PieView extends View {

private int[] data;				//数据
private String[] info;			//文本信息
private float[] percent;		//比例
private int[] colors = 			//颜色
new int[]{Color.RED, Color.YELLOW, Color.BLUE, Color.GREEN, Color.CYAN};
private Paint mainPaint;		//轮廓画笔
private int ScrHeight;			//屏幕高度
private int ScrWidth;			//屏幕宽度
private Paint arrPaint;			//填充画笔
private Paint textPaint = null;	//文本画笔

//构造函数
public PieView(Context context,int[] data, String[] info) {
super(context);

this.data = data;
this.info = info;
initData();
initPaint();
}
//初始化画笔
private void initPaint(){
mainPaint = new Paint();
mainPaint.setAntiAlias(true);
mainPaint.setColor(Color.WHITE);
mainPaint.setStyle(Style.STROKE);
mainPaint.setStrokeWidth(3);

arrPaint = new Paint();
arrPaint.setStyle(Style.FILL);
BlurMaskFilter PaintBGBlur = new BlurMaskFilter(
2, BlurMaskFilter.Blur.SOLID);
arrPaint.setMaskFilter(PaintBGBlur);

textPaint = new Paint();
textPaint.setColor(Color.BLUE);
textPaint.setTextSize(16);
textPaint.setTypeface(Typeface.DEFAULT_BOLD);
}
//数据转化比例
private void initData(){
int sum=0;
for (int i = 0 ;i < data.length; i++){
sum += data[i];
}
percent = new float[data.length];
for (int i = 0 ;i < data.length; i++){
percent[i] = (float)data[i] /sum * 360;
}
}
//绘图
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

ScrHeight = getHeight();
ScrWidth = getWidth();

float cirX = ScrWidth / 2;
float cirY = ScrHeight / 3 ;
float radius = ScrHeight / 4 ;

float arcLeft = cirX - radius;
float arcTop  = cirY - radius ;
float arcRight = cirX + radius ;
float arcBottom = cirY + radius ;
RectF arcRF0 = new RectF(arcLeft, arcTop, arcRight, arcBottom);

float CurrPer = 0;
for(int i=0; i<percent.length; i++) {
arrPaint.setColor(colors[i]);
canvas.drawArc(arcRF0, CurrPer, percent[i], true, arrPaint);
canvas.drawArc(arcRF0, CurrPer, percent[i], true, mainPaint);
CurrPer += percent[i];
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  andriod 饼图 PieChart