2013-12-01 4 views
1

Я использую HoloGraphLibrary для Android, но мне нужен процент каждого сегмента внутри круговой диаграммы (в его сегменте).Центр сегмента пирога - Android

Поскольку нет какой-либо системы координат, я не могу просто найти сегмент и добавить текст, поэтому мне нужен умный трюк, чтобы сделать это. Единственные ценности у меня есть в моем распоряжении: - The 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

Ok мой плохой, Это ответ:

// 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; 

поместить это в методе OnDraw() После установки области объекта

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); 
Смежные вопросы