背景

请假回家当伴郎,由于实在无聊,就写下了此篇博客!!按照惯例,先上动态图

怎么样!效果比较赞吧!!!

思路

当我第一次看见这个效果的时候,我的第一个想法是:如果是静态的时候是什么样子的!好,再来张图

看到这儿,大家有可能想到了 这不就是sin函数吗?对,不错,就是sin函数!!!
那怎么能实现这张静态图呢?我的思路是这样的:sin函数在我看来就是在x轴数据集合固定的时候,y轴对应数据的集合!那么x轴数据的集合是多少呢?请大家在看一下上图!不就是view的宽度吗!我们以每刻度为1,那么这个x轴的数据集合不就是[0,viewwidth]吗?此时我们只要代入sin函数中不就能求得y轴数据的集合了吗!!好大家先看下代码:

现在求的y轴数据的之后,想要画出那张静态图,就比较简单了!其实我们只要画viewwidth条垂直与x轴的直线就行了!那么怎么出现曲线状态呢!其实这些直线的高度不一样的。那这些高度是怎么求出来的呢?就是我们用一个固定高度减去刚才求的y轴的值!
接下来大家看代码就知道了

从代码中大家可以看到我们总共绘制了viewwidth条直线。

至此,静态图就已经绘制OK了!!

那么,怎么绘制动态图?聪明的小伙伴,可能已经想到了!就是不停的变幻y轴的值就行了!相信大家已经看到,我们是把y轴的值存放到数组中的!!我们只要按照一定的规律移动数组中数据的位置就行了!那么我们该怎么移动的?

1.首先我得先定义个另外个数组用来存这些变化的数据。同时规定好了变化的量!!在这之前,大家得先了解这个函数 System.arraycopy() (不懂的,自己百度去!!)

2.现在就是剩下每隔一段时间绘制啦!我们直接看整个 ondraw() 方法!

最后附上所有代码图

讲解结束!!

最新文章

  1. iOS----- Crash 分析(文二)-崩溃日志组成
  2. springmvc参数绑定
  3. JS_ECMA基本语法中的几种封装的小函数-1
  4. 代码重构-2 简单不变的 if else 用字典代替
  5. 05.Hibernate多对多关联
  6. asp.net(vs2005) + Sql2000 缓存依赖
  7. CentOS下Apache+SVN+LDAP的安装与配置
  8. Python Mixin混入的使用方法
  9. laravel学习前期遇到的小知识点(1)
  10. Android自定义Toast宽度无法设置问题解决
  11. JPush极光推送 Java调用服务器端API开发
  12. [Codeforces Round #431]简要题解
  13. [转]高级SQL注入:混淆和绕过
  14. 富文本编辑器Quill(二)上传图片与视频
  15. sqlserver waitfor time 延迟函数的用法
  16. Farm Irrigation
  17. Spring中使用Ehcache的方法和注意事项
  18. 047——VUE中css过渡动作实例
  19. - (void)addConstraints:(NSArray<__kindof NSLayoutConstraint *> *)constraints
  20. bzoj1005: [HNOI2008]明明的烦恼 prufer序列

热门文章

  1. 利用socket.io+nodejs打造简单聊天室
  2. Oracle查询及删除重复数据
  3. spring jdbc查询 依赖JdbcTemplate这个类模版封装JDBC的操作
  4. Linux 目录和文件操作
  5. Oracle 动态sql 实现方式
  6. oblique perspective projection
  7. 手动安装minGW
  8. Unity3D刚体不同力的测试(ForceMode,AddForce,RelativeAddForce)
  9. DDR 复位
  10. 大型站点技术架构PDF阅读笔记(一):