2013-12-13 134 views
2

今天我遇到了一個問題,就是在Android中以圖形方式繪製圖形。我正在使用Achartengine圖庫實現這一點,我已經完成了簡單的餅圖,但我不知道如何使用此做同心餅圖。在Android中製作同心圓餅圖

這是我想製作的圖形的演示圖像。提前:) enter image description here

+0

所以你想甜甜圈graph..not派graph..right? –

+0

哦,是啊..這是甜甜圈圖,是的,我想這..我以前做過這個事情,因爲我遇到了與此有關的線程..因此,戰爭的你的...所以你已經實現了? – GOLDEE

+0

yes..check the answer .. –

回答

3

這裏是例子,首先建立在你的view(xml)一個LinearLayout,並把它在你的activity通過它SingleDonutGraph類在此layout.You繪製donut graph也通過graphValues[]爲雙陣列(你要的價值設置在甜甜圈圖上)。

LayoutToDisplayChartLeftGraph = (LinearLayout) findViewById(R.id.right_graph_for_punch_count); 
Intent achartIntentLeft = new SingleDonutGraph().execute(TabletPunchCountActivity.this, LayoutToDisplayChartLeftGraph,graphValues); 

然後使用這個類SingleDonutGraph.java

public class SingleDonutGraph { 
private GraphicalView mChartView2; 
static int count = 3; 

int[] Mycolors = new int[] { Color.parseColor("#F2846B"), 
     Color.parseColor("#A01115"), Color.parseColor("#741E1E") }; 
String[] labels = { "TODAY", "AVERAGE", "TOTAL" }; 


public Intent execute(Context context, LinearLayout parent,double values[]) { 
    parent.removeAllViews(); 
    int[] colors = new int[count]; 
    for (int i = 0; i < count; i++) { 
     colors[i] = Mycolors[i]; 
    } 
    DefaultRenderer renderer = buildCategoryRenderer(colors); 
    renderer.setShowLabels(false); 
    renderer.setBackgroundColor(Color.BLACK); 
    renderer.setPanEnabled(false);// Disable User Interaction 
    renderer.setScale((float) 1.4); 
    renderer.setInScroll(true); //To avoid scroll Shrink   
    renderer.setStartAngle(90); 
    renderer.setShowLegend(false); 


    MultipleCategorySeries categorySeries = new MultipleCategorySeries(
      "Punch Graph"); 
    categorySeries.add(labels, values); 

    mChartView2 = ChartFactory.getDoughnutChartView(context, 
      categorySeries, renderer); 

    parent.addView(mChartView2); 

    return ChartFactory.getDoughnutChartIntent(context, categorySeries, 
      renderer, null); 
} 

protected DefaultRenderer buildCategoryRenderer(int[] colors) { 
    DefaultRenderer renderer = new DefaultRenderer(); 
    for (int color : colors) { 
     SimpleSeriesRenderer r = new SimpleSeriesRenderer(); 
     r.setColor(color); 
     renderer.addSeriesRenderer(r); 

    } 
    return renderer; 
} 
} 
+0

如何在上面添加文字以及如何提供一個小的圓形邊界b/w中央圓和外部圖表 – GOLDEE

+0

要在上面添加文字,您必須切換到RelativyLayout而不是LinearLayout.try與RealativeLayout CenterInParent對齊屬性.. –

+0

和一件事Abhijit我怎麼能把邊緣環後空心黑圈 – GOLDEE

1

感謝名單求助嘗試this

可B檢查會幫助你 。謝謝!

0

這兩條線使得差:

mChartView2 = ChartFactory.getDoughnutChartView(上下文, categorySeries,渲染器);

parent.addView(mChartView2); 

return ChartFactory.getDoughnutChartIntent(context, categorySeries, 
     renderer, null);