Android MPAndroidChart 实时曲线使用时间作为 X 轴

更新日期: 2024-01-18 阅读次数: 487 字数: 372 分类: Android

MPAndroidChart 确实强大,但是文档太少,需要自己踩坑。

在基于 MPAndroidChart 绘制手环传输过来的实时数据时,发现用时间(小时:分钟)作为横轴坐标,网上找到的示例代码都不好使。

不支持时间戳

如果直接使用

System.currentTimeMillis()

生成基于毫秒的时间戳作为 x 坐标,会发现 MPAndroidChart 根本无法展示,我不确定问题出在哪里。有两个推测:

  1. 数值太大,组件不支持
  2. x 轴可能设置了刻度 (这个可能无关)

基于时间差解决

而使用简单一秒加 1 的计数器,却可以完美的展示实时需求,唯一的问题是,这种计数器的值无法转换为时间。

于是我想到了一个方案,就是在 app 启动时,记录当前的时间戳,然后在获取到蓝牙手环数据时,计算一个时间差,将这个时间差作为 x 轴坐标。

这样就完美解决了直接使用时间戳过大的问题。

当然还有一些小细节:

  • 将时间戳的差值除以 1000f (float),转换成以秒为单位的 float 值。注意要加上 f,否则会被省略小数位
  • x 轴坐标不要追求均分,因为收到的数据时间点不是均匀分布的,强行均分也不合理

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式