【问题标题】:MPAndroidChart PieChart AnglesMPAndroidChart PieChart 角度
【发布时间】:2015-11-02 14:41:46
【问题描述】:

我需要一个在数据集中包含三个条目的饼图,以便当我触摸图表时它会旋转到正确的数据(这意味着它从 data[0] -> click -> spin to data[1] 开始 - > 点击 -> 旋转到数据[2] -> 点击 -> 旋转到数据[0])。

我实施的解决方案是这样的:

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;
    ....
    }

【问题讨论】:

    标签: android mpandroidchart


    【解决方案1】:

    我在我的项目中做了一些类似的功能,也许对你有帮助:

    @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

    附:在我的情况下,选定的切片位于顶部的中心。(将底部的 270 更改为 90)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2015-08-17
      • 2023-03-18
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多