安卓自定义控件之折线图

安卓自定义控件之折线图

目标:

效果图:


需求:

1、      折线图是固定的,不会滑动,但是随着点数的增多间距逐渐变小(需要在一页中可以看见全部的点)。

2、      横轴的数字也是随着点数的增多保持好间距。

3、      折现需要平滑一点

实现思路

因为没有滑动功能,所以思路比较简单。就是画线和画数字。根据点的多少来决定纵轴间的间距和下面数字之间的间距。

 

功能实现:

1、      初始化和获取宽高:


我比较喜欢在onSizeCHanged里面获取padding值和我们空间的宽高。

2、      开始绘制:

 

 

初始化:



测试点设置是这样的;

 

画x轴:

画y轴:

 


因为有了起始点和终止点所以我们画的时候就比较好计算了。

将获取的点转化为坐标轴上的点

根据点的索引,获得点的x值。根据点的值,获取点的y值。

画连接点的线

因为draw的绘画机制是后画的覆盖先画的。所以为了能够让点显出来,我们将点放在最后绘制。这里我们先画线。

画线为了平滑,我们选择了两个参考点的贝叶斯曲线。



手动画比较粗糙。原理就是利用2阶贝叶斯曲线进行平滑。

画点:


画点就没什么了,因为之前转化过坐标,所以直接用就好了。

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值