3

私のアプリケーションでは、5 つの企業の業績を比較するための円グラフを使用したアクティビティを開発しています。

このために、どのように円グラフ操作を使用できますか..

リンクを参照 しましたが、それを達成するにはいくつかの困難があります。解決策を見つけるのを手伝ってください...

前もって感謝します..

4

1 に答える 1

6

円グラフへのサンプル クラス。

public class DrawGraph extends View {
Paint p;
private ArrayList<Integer> aList = new ArrayList<Integer>();
int width;
int height;
int bar_width;
int bar_height;
int bar_height1;
int c[] = { Color.RED, Color.BLUE, Color.CYAN, Color.GREEN, Color.MAGENTA,
        Color.YELLOW };

public DrawGraph(Context context, ArrayList<Integer> data) {
    super(context);
    p = new Paint();
    aList = data;
}


public void draw(Canvas canvas) {
    int x = getWidth();
    int y = getHeight();
    float t = getTotal();
    p.setColor(Color.parseColor("#78777D"));
    p.setStyle(Style.STROKE);
    p.setStrokeWidth(2);
    canvas.drawRect(0, 0, x - 1, y - 1, p);
    int n = aList.size();
    float curPos = -90;
    p.setStyle(Style.FILL);
    RectF rect = new RectF(20, 20, x - 20, y - 20);
    for (int i = 0; i < n; i++) {
        p.setColor(c[i]);
        float thita = (t == 0) ? 0 : 360 * aList.get(i) / t;
        canvas.drawArc(rect, curPos, thita, true, p);
        curPos = curPos + thita;
    }
}

private float getTotal() {
    int total = 0;
    for (int i = 0; i < aList.size(); i++) {
        total = total + aList.get(i);
    }
    return total;
 }
}

this を参照して、アクティビティから呼び出します。

public class MyGraphActivity extends Activity {
LinearLayout pane;
private DrawGraph dg;
ArrayList<Integer> aLIst = new ArrayList<Integer>();

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    pane = (LinearLayout) findViewById(R.id.pane);

    aLIst.add(200);
    aLIst.add(300);
    aLIst.add(150);
    aLIst.add(400);

    dg = new DrawGraph(this, aLIst);
    pane.addView(dg);

  }
}
于 2012-11-19T04:50:39.847 に答える