MPAndroidChart 确实强大,但是文档太少,需要自己踩坑。
在基于 MPAndroidChart 绘制手环传输过来的实时数据时,发现用时间(小时:分钟)作为横轴坐标,网上找到的示例代码都不好使。
不支持时间戳
如果直接使用
System.currentTimeMillis()
生成基于毫秒的时间戳作为 x 坐标,会发现 MPAndroidChart 根本无法展示,我不确定问题出在哪里。有两个推测:
- 数值太大,组件不支持
- x 轴可能设置了刻度 (这个可能无关)
基于时间差解决
而使用简单一秒加 1 的计数器,却可以完美的展示实时需求,唯一的问题是,这种计数器的值无法转换为时间。
于是我想到了一个方案,就是在 app 启动时,记录当前的时间戳,然后在获取到蓝牙手环数据时,计算一个时间差,将这个时间差作为 x 轴坐标。
这样就完美解决了直接使用时间戳过大的问题。
当然还有一些小细节:
- 将时间戳的差值除以 1000f (float),转换成以秒为单位的 float 值。注意要加上 f,否则会被省略小数位
- x 轴坐标不要追求均分,因为收到的数据时间点不是均匀分布的,强行均分也不合理
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式