Android图形graphics--饼图:HoloGraphLibrary源码修改
来源:互联网 发布:中英联合声明失效 知乎 编辑:程序博客网 时间:2024/05/22 09:40
public class PieSlice { private int color; private float value; public int getColor() { return color; } public void setColor(int color) { this.color = color; } public float getValue() { return value; } public void setValue(float value) { this.value = value; }}
public class PieGraph extends View {private ArrayList<PieSlice> slices = new ArrayList<PieSlice>();private Paint paint = new Paint();private int thickness = 50;public PieGraph(Context context) {super(context);}public PieGraph(Context context, AttributeSet attrs) {super(context, attrs);} public void update() { postInvalidate(); }public void onDraw(Canvas canvas) {canvas.drawColor(Color.TRANSPARENT);paint.reset();paint.setAntiAlias(true);float midX, midY, radius, innerRadius;float currentAngle = 270;//起始角度 float currentSweep; int totalValue = 0;midX = getWidth()/2;midY = getHeight()/2;if (midX < midY){radius = midX;} else {radius = midY;}innerRadius = radius - thickness;//用arcTo方法画360度的弧形是画不出来的,因此只有一种类型时考虑用画圆的方式if(slices!=null && slices.size()<=1){int saveCount = canvas.saveLayer(0, 0, getWidth(), getHeight(), null,Canvas.ALL_SAVE_FLAG);paint.reset();paint.setAntiAlias(true);if(slices.size()==1){paint.setColor(slices.get(0).getColor());}else {paint.setColor(Color.parseColor("#F0F1F2"));//没有类型时,默认显示一个灰色的饼图}canvas.drawCircle(midX, midY, radius, paint);paint.reset();paint.setAntiAlias(true);paint.setColor(Color.YELLOW);paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));canvas.drawCircle(midX, midY, innerRadius, paint);canvas.restoreToCount(saveCount);return;}for (PieSlice slice : slices){totalValue += slice.getValue();}for (PieSlice slice : slices){Path p = new Path();paint.setColor(slice.getColor());currentSweep = (slice.getValue()/totalValue)*(360);p.arcTo(new RectF(midX - radius, midY - radius, midX + radius, midY + radius), currentAngle, currentSweep);p.arcTo(new RectF(midX - innerRadius, midY - innerRadius, midX + innerRadius, midY + innerRadius), currentAngle + currentSweep, -currentSweep);p.close();canvas.drawPath(p, paint);currentAngle = currentAngle+currentSweep;}}public void addSlice(PieSlice slice) {this.slices.add(slice);postInvalidate();}}
0 0
- Android图形graphics--饼图:HoloGraphLibrary源码修改
- Android 开源项目源码解析 -->HoloGraphLibrary 源码解析(九)
- HoloGraphLibrary 源码解析
- HoloGraphLibrary 源码解析
- HoloGraphLibrary 源码解析
- Android图形graphics
- Android图形---Graphics(概要)
- 绘制集合图形---android.graphics
- Android绘制图表的项目,支持绘制线状图、柱状图、饼状图-HoloGraphLibrary 源码解析,超详细
- android绘制图形:android.graphics.drawable.shapes
- android绘制图形:android.graphics.drawable
- android绘制图形:android.graphics.drawable.Drawable
- 开源项目源码解析-HoloGraphLibrary 源码解析
- Android图形graphics--Canvas的save,restore,rotate的理解
- Android图形graphics--自定义TextView,onMeasure和onDraw
- C#图形Graphics
- Graphics类绘制图形
- Core Graphics图形变换
- UITableview性能优化总结
- Android IBinder的linkToDeath介绍及情景模拟
- Android-Activity
- Java--Http: HttpClient(post/get)
- android系统中,点击EditText时,隐藏系统软键盘,显示光标
- Android图形graphics--饼图:HoloGraphLibrary源码修改
- iOS MVVM+RAC 从框架到实战
- eclipse中修改字体大小
- javaBean
- UVA 10048 Audiophobia(Floyd变形)
- java单链表基本操作(二)--指定位置增加节点
- 二叉树的非递归遍历
- 文章标题warning: could not load any Objective-C class information. This will significantly reduce the qu
- LeetCode *** 104. Maximum Depth of Binary Tree