2016-03-25 5 views
0

こんにちは私は半円形のパイチャートをachartengineで使用したいと思います。しかし、私は成功しませんでした。どうすればいいですか?achartengineでハーフパイチャートが可能ですか?

私は、これは

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

単純にこのクラスを使用しway.Butみました。あなたは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(); 
} 

}

関連する問題