你好我想用 achartengine 使用Half PieChart。但我没有成功。我怎么能这样做?请帮助我。
我试过这种方式。但是
DefaultRenderer mRenderer = new DefaultRenderer();
mRenderer.setLabelsColor(Color.BLACK);
mRenderer.setPanEnabled(false);
mRenderer.setChartTitleTextSize(mActivity.getResources().getDimension(R.dimen.graph_chart_title_size));
mRenderer.setLabelsTextSize(mActivity.getResources().getDimension(R.dimen.graph_chart_text_size));
mRenderer.setShowLegend(false);
mRenderer.setClickEnabled(true);
答案 0 :(得分:0)
只需使用此课程。你可以自己定制vsh。
<强> HalfPieGraph.java 强>
public class HalfPieGraph extends View {
private Paint piePaint;
private RectF rectF;
private float[] data;
public PieGraph(Context context, AttributeSet attrs) {
super(context, attrs);
piePaint = new Paint();
piePaint.setAntiAlias(true);
piePaint.setDither(true);
piePaint.setStyle(Paint.Style.FILL);
data = new float[]{20f, 30f, 10f, 40f};
}
private float[] pieSegment() {
float[] segValues = new float[this.data.length];
float Total = getTotal();
for (int i = 0; i < this.data.length; i++) {
segValues[i] = (this.data[i] / Total) * -180;
}
return segValues;
}
private float getTotal() {
float total = 0;
for (float val : this.data) {
total += val;
}
return total;
}
@Override
protected void onDraw(Canvas canvas) {
if (data != null) {
int top = getHeight() / 6;
int left = getWidth() / 6;
int endBottom = getHeight() - top;
int endRight = getWidth() - left;
rectF = new RectF(left, top, endRight, endBottom);
float[] segment = pieSegment();
float segStartPoint = 0;
for (int i = 0; i < segment.length; i++) {
Random rnd = new Random();
int color = Color.argb(255, (int) segment[i], rnd.nextInt(256), rnd.nextInt(256));
piePaint.setColor(color);
canvas.drawArc(rectF, segStartPoint, segment[i], true, piePaint);
segStartPoint += segment[i];
}
}
}
public void setData(float[] data) {
this.data = data;
invalidate();
}
}