• android--WaveView(波浪形View) 的实现记录


    背景

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

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

    思路

    当我第一次看见这个效果的时候,我的第一个想法是:如果是静态的时候是什么样子的!好,再来张图
    图片
    看到这儿,大家有可能想到了 这不就是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() 方法!

    图

    最后附上所有代码图

    讲解结束!!

  • 相关阅读:
    oracle 查询 当前最大时间的value的值
    Visual Studio《加载此属性页时出错》的解决办法
    (转) 关于在IE6下 无法跳转问题
    LINQ TO XML 个人的一些心得1
    CSS实现单行、多行文本溢出显示省略号(…)
    html 图像映射(一个图像多个连接)
    JS页面跳转大全
    首行负缩进达到内容对齐的目的
    HTML图片死活不显示
    JS高级. 06 缓存、分析解决递归斐波那契数列、jQuery缓存、沙箱、函数的四种调用方式、call和apply修改函数调用方法
  • 原文地址:https://www.cnblogs.com/likeandroid/p/4480344.html
Copyright © 2020-2023  润新知