Android实现音频条形图效果实现音频条形图效果(仿音频动画无监听音频输入仿音频动画无监听音频输入)
主要介绍了Android实现音频条形图效果(仿音频动画无监听音频输入)的相关资料,非常不错,具有参考借鉴价
值,需要的朋友可以参考下
音频条形图
如下图所示就是这次的音频条形图:
由于只是自定义View的用法,我们就不去真实地监听音频输入了,随机模拟一些数字即可。
如果要实现一个如上图的静态音频条形图,相信大家应该可以很快找到思路,也就是绘制一个个的矩形,每个矩形之间稍微偏
移一点距离即可。如下代码就展示了一种计算坐标的方法。
for (int i = 0; i < mRectCount; i++) {
// 矩形的绘制是从左边开始到上、右、下边(左右边距离左边画布边界的距离,上下边距离上边画布边界的距离)
canvas.drawRect(
(float) (mRectWidth * i + offset),
currentHeight,
(float) ( mRectWidth * (i + 1)),
mRectHeight,
mRectPaint
);
}
如上代码中,我们通过循环创建这些小的矩形,其中currentHeight就是每个小矩形的高,通过横坐标的不断偏移,就绘制出了
这些静态的小矩形。下面再通过矩形的高度随机变化模拟音频,这里直接利用Math.randoom()方法来随机改变这些高度,并
赋值给currentHeight,代码如下所示。
// 由于只是简单的案例就不监听音频输入,随机模拟一些数字即可
mRandom = Math.random();
currentHeight = (float) (mRectHeight * mRandom);
这样就能实现静态效果了,但是如何实现动态效果呢?其实也是非常简单的,只要在onDraw()方法中再去调用invalidate()方法
通知View进行重绘就可以了。不过这里不需要每次一绘制完新的矩形就通知View进行重绘,这样会因为刷新速度太快反而影
响效果。因此,我们可以使用如下代码来进行View的延迟重绘,代码如下:
posInvalidateDelayed(300);