2015-11-02 7 views
0

Мне нужна круговая диаграмма с тремя записями в наборе данных, так что, когда я касаюсь диаграммы, она поворачивается к правильным данным (это означает, что она начинается с данных [0] -> щелчок -> вращение к данным [ 1] -> click -> spin to data [2] -> click -> spin to data [0]).MPAndroidChart PieChart Angles

Решение Я реализовал идет что-то вроде этого:

START_OFFSET = 95; 
_index0= absoluteAngles[0] - (drawAngles[0]/2) - START_OFFSET ; 
_index1= absoluteAngles[1] - (drawAngles[1]/2) - START_OFFSET ; 
_pendingPieOffset = absoluteAngles[2] - (drawAngles[2]/2) - START_OFFSET; 

А вот где начинаются проблемы. Это, предположительно, дает мне правильный угол, так как в absoluteAngle представлен конец среза, а drawAngles представляет собой ширину среза. Поэтому, хотя моя математика правильная, я не могу центрировать центр каждого среза с дном.

 _overlay.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
    ... 
case AVAILABLE_BALANCE: 
    _pieChart.spin(SPIN_DURATION, _index2, _index0, Easing.EasingOption.EaseInCubic); 
    break; 
case USED_BALANCE: 
    _pieChart.spin(SPIN_DURATION, _index0, _index1, Easing.EasingOption.EaseInCubic); 
    break; 
case PENDING_BALANCE: 
    _pieChart.spin(SPIN_DURATION, _index1, _index0, Easing.EasingOption.EaseInCubic); 
    break; 
    .... 
    } 

ответ

2

Я сделал некоторые аналогичные функциональные возможности в моем проекте, может быть, это поможет вам:

@Override 
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) { 
    //get current angle 
    float start = chart.getRotationAngle(); 
    //get index of current slice 
    int i = e.getXIndex(); 
    //calculate center of slice 
    float offset = mDrawAngles[i]/2; 
    // calculate the next angle 
    float end = 270f-(mAbsoluteAngles[i]-offset); 

    //rotate to slice center 
    chart.spin(SPIN_DURATION,start,end,Easing.EasingOption.EaseInOutQuad); 
} 

Просто реализовать OnChartValueSelectedListener интерфейс активности или фрагмента - MPAndroidChart Wiki.

P.S. В моем случае выбранный срез центрируется вверху (смена 270 до 90 для нижней)

Смежные вопросы