前言:前段时间做的工程,自己一个人小打小闹的修改着,代码不完善之处请在评论指出,谢谢!
工程来源:github AndroidCharts:https://github.com/dacer/AndroidCharts
修改:使得PieView可以显示数字和颜色
我的需求:将每间教室的名称显示在图上,同时根据数值 按比例涂色
效果图:
代码1:PieView修改后的代码:
package com.androidcharts;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import java.util.ArrayList;
/**
* Created by Dacer on 11/13/13.
*/
public class PieView extends View {
private Paint textPaint;
private Paint redPaint;
private Paint linePaint;
private Paint whitePaint;
private int mViewWidth;
private int mViewHeight;
private int textSize;
private int pieRadius;
private Point pieCenterPoint;
private Point tempPoint;
private Point tempPointRight;
private int lineLength;
private float leftTextWidth;
private float rightTextWidth;
private float topTextHeight;
private int lineThickness;
private RectF cirRect;
private Rect textRect;
private ArrayList<String> areanameList;
private ArrayList<PieHelper> pieArrayList = new ArrayList<PieHelper>();
private ArrayList<PieHelper> pieArrayList_ = new ArrayList<PieHelper>(); //单纯备份传进的角度
private final int TEXT_COLOR = Color.parseColor("#9B9A9B");
private final int GRAY_COLOR = Color.parseColor("#D4D3D4");
private final int RED_COLOR = Color.argb(50, 255, 0, 51);
private String[] colorArray = {"#e74c3c","#2980b9","#1abc9c"};
private Runnable animator = new Runnable() {
@Override
public void run() {
boolean needNewFrame = false;
for(PieHelper pie : pieArrayList){
pie.update();
if(!pie.isAtRest()){
needNewFrame = true;
}
}
if (needNewFrame) {
postDelayed(this, 10);
}
invalidate();
}
};
public PieView(Context context){
this(context,null);
}
public PieView(Context context, AttributeSet attrs){
super(context, attrs);
textSize = MyUtils.sp2px(context, 15);
lineThickness = MyUtils.dip2px(context, 1);
lineLength = MyUtils.dip2px(co