MPAndroidChart 教程:FillFormatter

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014136472/article/details/50383521

该FillFormatter 接口允许自定义的地方填充线的LineDataSet应该结束。 所有这一切需要做的就是创建一个新的类并实现FillFormatter接口。 使用

    public float getFillLinePosition(LineDataSet dataSet, 
        LineDataProvider provider)

执行该计算的填充线为个别的结束点的自定义逻辑接口的方法LineDataSet

创建一个类实现的接口:

public class MyCustomFillFormatter implements FillFormatter {

    @Override
    public float getFillLinePosition(LineDataSet dataSet, LineDataProvider dataProvider) {

        float myDesiredFillPosition = ...;
        // put your logic here...

        return myDesiredFillPosition;
    }
}

然后设置自定义格式,以您的LineDataSet

lineDataSet.setFillFormatter(new MyCustomFillFormatter());

下面是默认的实现(逻辑)DefaultFillFormatter。

/**
 * Default formatter that calculates the position of the filled line.
 *
 * @author Philipp Jahoda
 */
public class DefaultFillFormatter implements FillFormatter {

    @Override
    public float getFillLinePosition(ILineDataSet dataSet, LineDataProvider dataProvider) {

        float fillMin = 0f;
        float chartMaxY = dataProvider.getYChartMax();
        float chartMinY = dataProvider.getYChartMin();

        LineData data = dataProvider.getLineData();

        if (dataSet.getYMax() > 0 && dataSet.getYMin() < 0) {
            fillMin = 0f;
        } else {

            if (!dataProvider.getAxis(dataSet.getAxisDependency()).isStartAtZeroEnabled()) {

                float max, min;

                if (data.getYMax() > 0)
                    max = 0f;
                else
                    max = chartMaxY;
                if (data.getYMin() < 0)
                    min = 0f;
                else
                    min = chartMinY;

                fillMin = dataSet.getYMin() >= 0 ? min : max;
            } else {
                fillMin = 0f;
            }
        }

        return fillMin;
    }
}
阅读更多
换一批

没有更多推荐了,返回首页