最近涉及的某个医疗相关的业务,传感器数据传递上来需要实现示波器的效果,心电图的效果,目前交付效果还算理想,于是封装了一下,方便自己以后使用,也给大家分享一下
二、效果图
图一是心电图效果,图二是一个滚动的波形图
三、功能实现
(一)绘制背景网格
为了让他看上去像示波器上的数据,我们先绘制一层网格背景,看上去似乎就有那么点意思了
在onLayout函数中获取控件宽高,然后除以默认网格的宽高,得出需要绘制横线和竖线的数量/** 根据网格的单位长宽,获取能绘制网格横线和竖线的数量*/gridHorizontalNum = (int) (mHeight / GRID_WIDTH);gridVerticalNum = (int) (mWidth / GRID_WIDTH);
在onDraw函数中,通过for循环,来一条条绘制横线和竖线/*** 绘制网格** @param canvas*/private void drawGrid(Canvas canvas) {/** 设置颜色*/mLinePaint.setColor(gridLineColor);/** 绘制横线*/for (int i = 0; i < gridHorizontalNum + 1; i++) {canvas.drawLine(0, i * GRID_WIDTH,mWidth, i * GRID_WIDTH, mLinePaint);}/** 绘制竖线*/for (int i = 0; i <