Android-自定义心电图控件

 

一、写在前面的话

最近朋友找帮忙,需要绘制心率波形,要细腻流畅。于是研究了一下,于是就有了这篇文章。本文主要讲一下笔者的思路,控件不是实现的很好,后面有时间再打磨。主要是笔者觉得这个过程挺有意思的,就想和大家分享一下。目前的效果就像上面那样,因为手机录屏录出来掉帧太严重,就录了个视频做了张gif图,实际上面的很丝滑,下面的效果不是很理想,具体原因后面会介绍。

二、心率线的绘制思路

1、线要平滑,要有曲率,还有向左平移。

这里我用三阶贝塞尔曲线来画,其实二阶也可以,但是我以前的项目画的是三阶的,所以就直接搬过来用了,偷个懒,哈哈。

//实际点的集合
private List<PointF> mPointList;
//控制点的集合
private List<PointF> mControlPointList;
 private void drawLine(Canvas canvas) {
        linePath.reset();
        mPointList.clear();
        mControlPointList.clear();
        linePath.moveTo(0, 0);
        int offset = w / maxSize;
        int allY = high - low;
        if (allY == 0) {
            return;
        }
        for (int i = 0; i < data.size(); i++) {
            mPointList.add(new PointF(i * offset, h * (data.get(i) - low) / allY));
            if (mPointList.get(i).y < top) {
                mPointList.get(i).y = top;
            }
        }
        //初始化控制点
        if (mPointList.size() < 2) {
            return;
        }


        for (int i = 0; i < mPointList.size(); i++) {
            if (i == 0) {
                //第一个点
                PointF nextPoint = mPointList.get(i + 1);
         
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值