饼图中心 - Android

时间:2013-12-01 09:21:02

标签: android math pie-chart

我正在使用Android的HoloGraphLibrary,但我需要饼图中每个细分的百分比(在其细分中)。

因为没有任何坐标系,我不能只找到段并添加一些文本,所以我需要一个聪明的技巧来做到这一点。我拥有的唯一价值观是:   - 饼图的midX和midY坐标   - 内半径和外半径   - 每个段扫过(或覆盖360度我们的角度)

我已经设法获得标签的Y坐标,但对X坐标使用相同的方法并没有产生正确的结果。这是我到目前为止的代码:

canvas.drawText(slice.getTitle(), (float) (midX + (innerRadius + (radius - innerRadius)/2)*-1*Math.cos((currentSweep-padding)/2*(Math.PI/180) )), (float) (midY - (innerRadius + (radius - innerRadius)/2)*Math.cos((currentSweep)/2*(Math.PI/180))), paint);

任何人都可以帮助将标签集中在细分市场吗?

由于

2 个答案:

答案 0 :(得分:2)

好吧,我的坏, 这是一个答案:

// add a text title centered in each slice :
        textAngle += currentSweep;
        mBlackColorPaint.setTextAlign(Paint.Align.CENTER);
        System.out.println("title : " + slice.getTitle() +  "Sweep : "+currentSweep + " Angle = "+currentAngle);
        canvas.drawText(slice.getTitle(),
                (float) (midX + (innerRadius + (radius - innerRadius)/2)*Math.sin((textAngle)*(Math.PI/360) )),
                (float) (midY - (innerRadius + (radius - innerRadius)/2)*Math.cos((textAngle)*(Math.PI/360))),
                mBlackColorPaint);
        textAngle += currentSweep;

在设置Region对象

后将其放在onDraw()方法中

答案 1 :(得分:0)

试试这个。它对我有用。

canvas.drawText(slice.getTitle(),
                        (float) (midX + (innerRadius + (radius - innerRadius)/2)*Math.sin((currentSweep)*(Math.PI/360) )),
                        (float) (midY - (innerRadius + (radius - innerRadius)/2)*Math.cos((currentSweep)*(Math.PI/360))),
                        mPaint);