Android MPChart自定义睡眠泳道图教程示例

 更新时间:2022年12月09日 09:53:11   作者:cxy107750  
这篇文章主要为大家介绍了Android MPChart自定义睡眠泳道图教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

声明

本文MPChart 代表的就是 MPAndroidChart。

本章节继续上次的自定义绘制,不同之前的图形, 日历下边的睡眠泳道图,每个item不同于之前的图形,会均等的width, 相反的是均等的高度的矩形,不等的宽度,就是所占X轴的比重不一样,见1.1睡眠泳道图。

1.0 睡眠泳道图

首先跳出MPChart自定义这层概念,我们来绘制这个图形,本身来说还是蛮简单的,绘制四种不同的Rect,

根据不同的type 以及不同的X轴占比,两个因素就可以将这个图形确定下来, 其实本身也就是如此,将这两个变量因素存入到之前介绍的BarEntry中,这里定义为SleepItemEntry, 确定宽度的 变量,分成startTime, endTime, itemDuration = endTime - startTime。 将所有的睡眠数据转化成 Entry之后,按照之前章节介绍的逻辑,存入DataSet中,通过Buffer feed() 方法之后,形成Buffer 数组, 接着通过 Transformer 将buffer中的数据转为屏幕像素点,Render从buffer里同以往一样无差别取数据,每次取4个绘制Rect, 整个绘制完成。

SleepItemEntry

图1.1 SleepItemEntry

SleepItemEntry中保存了 type, 将改时间段的时间消耗变量存在 SleepItemTime中。

图1.2 SleepItemTime 属性

SleepBuffer

SleepBuffer 负责将上面的SleepItemEntry数据存入到Buffer数据中去,逻辑在 override的feed() 方法里实现,依次处理DataSet中的Entry,然后通过 addBar(left, top, right, bottom); 存入到 Buffer中去。

图1.3 SleepBuffer数据处理

addBar() 为父类 BarBuffer中的方法,将数据存入buffer中去。

protected void addBar(float left, float top, float right, float bottom) {
        buffer[index++] = left;
        buffer[index++] = top;
        buffer[index++] = right;
        buffer[index++] = bottom;
}

SleepRender

准备好SleepBuffer的数据之后,只需自定义自己的Render,然后就可以拿Buffer中的数据进行绘制了,将绘制逻辑放在override onDrawDataSet() 方法中,依旧可以看见Transformer 里的转化Buffer数据的逻辑,里面还包含了边界判断,RTL判断等其它的相关处理。

图1.4 SleepRender绘制泳道图

Okay, 至此泳道图的绘制告一段落,整体相比而言比较简单,但是依旧走了一遍MPChart自定义的逻辑,不同常规的绘制逻辑,Item的宽度,高度跟以前的不太一样。

后续我们介绍 LineChart,以及XAxis、YAxis的自定义逻辑,以及YAxis revert的情况下,配速图表的绘制,更多关于Android MPChart睡眠泳道图的资料请关注脚本之家其它相关文章!

相关文章

  • Android振动器使用方法详解

    Android振动器使用方法详解

    这篇文章主要为大家详细介绍了Android振动器使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Android自定义动态壁纸开发(时钟)

    Android自定义动态壁纸开发(时钟)

    今天小编就为大家分享一篇关于Android自定义动态壁纸开发(时钟),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Android系统升级的几种方式详解

    Android系统升级的几种方式详解

    随着Android系统的快速发展,越来越多的智能终端设备搭载Android平台,Android系统升级的可以优化智能电视系统性能、更新系统内容,因此,Android系统升级在Android系统开发领域极其重要,本文给大家介绍了Android系统升级的几种方式,需要的朋友可以参考下
    2024-05-05
  • Android程序开发之使用PullToRefresh实现下拉刷新和上拉加载

    Android程序开发之使用PullToRefresh实现下拉刷新和上拉加载

    这篇文章主要介绍了Android程序开发之使用PullToRefresh实现下拉刷新和上拉加载的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • 详解OpenGL Shader彩虹条纹效果的实现

    详解OpenGL Shader彩虹条纹效果的实现

    这篇文章主要为大家介绍了如何通过OpenGL Shader实现彩虹条纹效果,最后的效果和图片处理软件colorow中的彩虹效果滤镜相似,需要的可以参考一下
    2022-02-02
  • Android实现viewpager实现循环轮播效果

    Android实现viewpager实现循环轮播效果

    这篇文章主要为大家详细介绍了Android实现viewpager实现循环轮播效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Android中post和get的提交方式【三种】

    Android中post和get的提交方式【三种】

    本文主要对Android中三种POST和GET的提交方式进行详细介绍。通过任何一种方式可以实现的功能是,从安卓手机端提交数据到服务器端,服务器端进行判断,并返回相应的结果。三种方式各有利弊,实现效果相同,在实际的使用过程中可以根据本身的需要进行选择。
    2016-12-12
  • 如何使用Android实现接口实信息在留言板显示

    如何使用Android实现接口实信息在留言板显示

    这篇文章主要介绍了如何使用Android接口实现信息的留言板显示,需要的朋友可以参考下
    2015-07-07
  • Android开发TextView内的文字实现自动换行

    Android开发TextView内的文字实现自动换行

    这篇文章主要为大家介绍了Android开发TextView内的文字实现自动换行,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Android实现左侧滑动菜单

    Android实现左侧滑动菜单

    这篇文章主要为大家详细介绍了Android实现左侧滑动菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论