BubbleView
这是最后的效果图
-
主要的思想是通过postInvalidateDelayed()方法,来不断地重绘,更改集合中每一个Bubble对象的位置,从而达到一种动画的效果。
-
在onDraw()的最开始记录一个时间t1,然后再onDraw的最后记录一个时间t2, 延时的时间 = 我们期望的时间常量 - (t2 - t1)
这个期望的时间常量最好不大于30ms,否则出现用户会出现卡顿的感觉
-
onDraw()中主要操作的对象是自己定义的一个类Bubble,它的属性有
class Bubble(var x: Double, var y: Double, val r: Double, val angle: Int)
这里有个坑:
在进行集合删除操作的时候(由于Bubble的数量必须小于一个固定的常量allBubbleCount)
如果使用平时的迭代
for (x in list) {....}
就很容易出现被删除的点之后的一个点跳过迭代的现象
这时候就只能使用iterator进行手动迭代
- 注意需要在代码中手动开始和停止动画
BubbleView.start()
BubbleView.stop()
github地址:github.com/roger1245/R…