Android 有没有可能用阿卡丁净来做半个饼图?
您好,我想将Half-PieChart与achartengine一起使用。但我没有成功。我该怎么做?请帮助我 我试过这样做,但是Android 有没有可能用阿卡丁净来做半个饼图?,android,charts,achartengine,Android,Charts,Achartengine,您好,我想将Half-PieChart与achartengine一起使用。但我没有成功。我该怎么做?请帮助我 我试过这样做,但是 DefaultRenderer mRenderer = new DefaultRenderer(); mRenderer.setLabelsColor(Color.BLACK); mRenderer.setPanEnabled(false); mRenderer.setChartTitleTextSize(mActivity.getRe
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);
只需使用这个类。您可以根据需要自定义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();
}
公共类半平面图扩展视图{
私人油漆;
私有RectF-RectF;
私有数据;
公共图形(上下文、属性集属性){
超级(上下文,attrs);
piePaint=新油漆();
piePaint.setAntiAlias(真);
piePaint.setDither(真);
piePaint.setStyle(Paint.Style.FILL);
数据=新浮点数[]{20f、30f、10f、40f};
}
私有浮动段(){
float[]segValues=新的float[this.data.length];
float Total=getTotal();
for(int i=0;i
}