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

文章目录

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

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

    不支持时间戳

    如果直接使用

    System.currentTimeMillis()
    

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

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

    基于时间差解决

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

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

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

    当然还有一些小细节:

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

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式