欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

android实现音乐跳动效果的示例代码

程序员文章站 2022-07-06 09:15:32
效果图实现整体的流程图如下上面主要步骤分为3个1、计算宽度能放下多少列的音频块。2、计算每一列中音频块的个数3、绘制音频块1、计算宽度能放下多少列的音频块。设置音频块的宽度为dancewidth,音频...

效果图

android实现音乐跳动效果的示例代码

实现

整体的流程图如下

android实现音乐跳动效果的示例代码

上面主要步骤分为3个
1、计算宽度能放下多少列的音频块。
2、计算每一列中音频块的个数
3、绘制音频块

1、计算宽度能放下多少列的音频块。

设置音频块的宽度为dancewidth,音频块横向之间的间距为dancegap,那么可以算出能放的列数:

2、计算每一列中音频块的个数

在算出横向能放置多少音频块后,遍历横,然后绘制列中的音频块,列中的音频块的个数跟音频的高低相关,这里实现方式是通过visualizer这个类然后获取到mrawaudiobytes数组,

这里设置的获取的mrawaudiobytes数组的大小是128,数组的区间范围[-128,127],计算列的时候这里做了两个比较重要的操作,第一个是怎么把mrawaudiobytes数组的值与音频的个数做映射,第二个是怎么取mrawaudiobytes数组的值。

上面做了两个映射,首先可能有0~n横,但是mrawaudiobytes大小是128,遍历横的时候对下标进行一个映射,保证获得的值是均匀的,

第二个映射,是得到了代表音频大小的mrawaudiobytes数组,现在要把这里面的值跟列的高度做一个映射,值越大高度越高,音频块就越多。

上面是先得到列最多能展示多少音频块,再根据mrawaudiobytes的值来算出当前列展示多少个音频块。这一步也叫归一化,区间映射。

3、绘制每一个音频块

就是根据高度来绘制rectangle,算出一列能绘制多少个音频块,每一个音频块是一个rectangle,然后绘制rectangle,为了效果更好,判断上面的音频块加上渐变。

github地址

使用方法

  • shader_num 顶部加渐变的个数
  • color_end 渐变尾部颜色
  • color_start 渐变开头颜色
  • color_center 渐变中间颜色
  • min_dance_num 每一列中最少显示的个数
  • max_dance_num 每一列中最大显示的个数
  • dance_gap 每一个音频格之间的间距

到此这篇关于android实现音乐跳动效果的示例代码的文章就介绍到这了,更多相关android 音乐跳动内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!