效果图

安卓动画样例-圆环变多变少_安卓开发

代码

class CircleViewAnim(context: Context, attributeSet: AttributeSet? = null) :
View(context, attributeSet) {
private var mPaint: Paint = Paint()
private var mTimer: Timer? = null
private var basePadding = 20
private var count = 0
private var maxCount = 20
private var isIncreasing = true

init {
mPaint.color = Color.parseColor("#fab27b")
mPaint.isAntiAlias = true
mPaint.style = Paint.Style.STROKE
mPaint.strokeWidth = 10f
startAnim()
}

private fun drawCircle(canvas: Canvas) {
(0..count).forEach {
var padding = it * basePadding
canvas.drawCircle((width / 2).toFloat(), (height / 2).toFloat(), 10f + padding, mPaint)
}
if (isIncreasing) {
count++
} else {
count--
}
if (count >= maxCount) {
isIncreasing = false
} else if (count <= 0) {
isIncreasing = true
}
}

private fun startAnim() {
mTimer = Timer()
mTimer?.schedule(object : TimerTask() {
override fun run() {
postInvalidate()
}
}, 50, 50)
}

override fun onDraw(canvas: Canvas) {
drawCircle(canvas)
}
}