Android进阶系列:八、自定义View之音频抖动动效,android软件开发前景

这样就可以在view中绘制一个矩形,如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-trYtBNu0-1637140099716)(https://upload-images.jianshu.io/upload_images/14140248-ed1d736aa3661fd6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
####绘制多个矩形
现在我们可以绘制多个矩形在画布上。直接采用for循环是不行的,这样会让矩形重叠在一起,导致只显示一个矩形,所以应该控制让矩形错开显示,我们可以让矩形之间间隔一个lineWidth。如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0mQ9sM1L-1637140099732)(https://upload-images.jianshu.io/upload_images/14140248-6f5681e178ade4d7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
我们以第一个矩形的左边为参照,标为0,则其右边为1,第二个矩形的左边为2,右边为3,以此类推,它们的距离都是lineWidth。所以我们可以得出:

  • 第一个矩形的左边是0,第二个矩形的左边是2,第三个左边是4,以此类推是一个2(n-1)的等差数列
  • 第一个矩形的右边是1,第二个矩形的右边是3,第三个右边是5,以此类推是一个2n-1的等差数列
    所以我们可以这样写:

for (int i = 1; i <= 4; i++) {
rectF.left = widthCentre - lineWidth / 2 + 2 * (i - 1) * lineWidth;
rectF.right = widthCentre + lineWidth / 2 + (2 * i - 1) * lineWidth;
rectF.top = heightCentre - lineWidth * 2;
rectF.bottom = heightCentre + lineWidth * 2;
//绘制圆角矩形,rx:x方向上的圆角半径。ry:y方向上的圆角半径。
canvas.drawRoundRect(rectF, 6, 6, paint);
}

当然注意要在循环里绘制圆角矩形,因为绘制多个矩形,当然要有一个绘制一个,不然放到循坏外只能绘制最后一个。效果如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fL504PR2-1637140099733)(https://upload-images.jianshu.io/upload_images/14140248-b14a802eebd714ed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
####绘制矩形抖动
我们要绘制音频抖动的效果,矩形的高度肯定不能一样,而是要根据声音的大小来显示,这里我们没有声音,简单模拟一下给高度乘上for循环里的i效果如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hv9qtNvx-1637140099734)(https://upload-images.jianshu.io/upload_images/14140248-95649146c2b1d98b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值