这样就可以在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