MPAndroidChart 3.0.3在设置时间为x轴遇到的一些坑

1.将时间戳直接放入到List<Entry> entries中,并且设置

entries.add(new Entry(currTime, floatValue));

xAxis.setGranularity(60f);

xAxis.setValueFormatter(new IAxisValueFormatter() {

private SimpleDateFormat mFormat = new SimpleDateFormat(“MM-dd HH:mm”);

@Override
public String getFormattedValue(float value, AxisBase axis) {
long timestamp = (long) (value*1000l);
return mFormat.format(timestamp);
}
});

放大的时候间隔60就不继续放大了,例如1528250160(06-06 09:56),1528250220(06-06 09:57)……会出现两个点同时显示在一个x轴上的情况

我的解决方法:取第一个值为基础值,后面的减基础值就得到一个比较小的值,在格式化的时候再把基础值加上

entries.add(new Entry(currTime-firstTime, floatValue));

xAxis.setValueFormatter(new IAxisValueFormatter() {

private SimpleDateFormat mFormat = new SimpleDateFormat(“MM-dd HH:mm”);

@Override
public String getFormattedValue(float value, AxisBase axis) {
long timestamp = (long) ((value+firstTime)*1000l);
return mFormat.format(timestamp);
}
});

显示正常了,但是发现x轴两点之间总会少一个点,导致时间隔了一分钟,当我把实际数值显示出来的时候发现原本以为x轴应该是0,60,120,180….结果是0,100,200,300…所以60没显示,显示了120对应的label

解决办法:将x轴上的值再除以60得到0,1,2,3,4….这样就没问题了

entries.add(new Entry((currTime-firstTime)/60,floatValue));

xAxis.setGranularity(1f);

xAxis.setValueFormatter(new IAxisValueFormatter() {

private SimpleDateFormat mFormat = new SimpleDateFormat(“MM-dd HH:mm”);

@Override
public String getFormattedValue(float value, AxisBase axis) {
long timestamp = (long) ((value*60+firstTime)*1000l);
return mFormat.format(timestamp);
}
});

but,最后并没有解决,经过一番排查之后发现public String getFormattedValue(float value, AxisBase axis) 中的value为float类型,我进行计算 (long) (value*1000l);的时候最后3位数出现了其他的数据,处理方法(long) ((int)value*1000l);