版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}
}