Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private var sweepAnimator: ValueAnimator? = null
- private var rotateAnimator: ValueAnimator? = null
- private var hideSweepAnimator: ValueAnimator? = null
- private var animatorSet: AnimatorSet? = null
- override fun onDraw(canvas: Canvas) {
- super.onDraw(canvas)
- canvas.drawArc(
- rectF, startAngle, sweepAngle + indeterminateSweepAngle, false, progressPaint
- )
- }
- private fun startIndeterminateAnimation() {
- startAngle = DEFAULT_INDETERMINATE_POSITION
- sweepAnimator = ValueAnimator.ofFloat(MAX_ANGLE, DEFAULT_INDETERMINATE_POSITION).apply {
- duration = DEFAULT_ANIMATION_DURATION
- interpolator = AccelerateDecelerateInterpolator()
- }
- sweepAnimator?.addUpdateListener {
- val animatedValue = it.animatedValue as Float
- indeterminateSweepAngle = -animatedValue
- invalidate()
- }
- rotateAnimator = ValueAnimator.ofFloat(startAngle, startAngle + MAX_ANGLE).apply {
- duration = DEFAULT_ROTATE_DURATION
- interpolator = AccelerateDecelerateInterpolator()
- repeatCount = ValueAnimator.INFINITE
- }
- rotateAnimator?.addUpdateListener {
- val animatedValue = it.animatedValue as Float
- startAngle = animatedValue
- invalidate()
- }
- animatorSet = AnimatorSet()
- animationSetListener()
- animatorSet?.play(rotateAnimator)?.after(sweepAnimator)
- animatorSet?.start()
- }
- private fun stopIndeterminateAnimation() {
- sweepAnimator?.cancel()
- rotateAnimator?.cancel()
- animatorSet?.cancel()
- sweepAnimator = null
- rotateAnimator = null
- animatorSet = null
- }
- fun stopAnimation() {
- animatorSet?.cancel()
- hideSweepAnimator?.cancel()
- }
- private fun animationSetListener() {
- animatorSet?.addListener(object : Animator.AnimatorListener {
- override fun onAnimationCancel(animation: Animator?) {
- hideSweepAnimator = ValueAnimator.ofFloat(startAngle, 270F).apply {
- duration = DEFAULT_ROTATE_DURATION
- repeatCount = ValueAnimator.INFINITE
- }
- hideSweepAnimator?.addUpdateListener {
- val animatedValue = it.animatedValue as Float
- invalidate()
- }
- hideSweepAnimator?.start()
- }
- })
- }
Advertisement
Add Comment
Please, Sign In to add comment