Guest User

Untitled

a guest
Mar 17th, 2019
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. private var sweepAnimator: ValueAnimator? = null
  2. private var rotateAnimator: ValueAnimator? = null
  3. private var hideSweepAnimator: ValueAnimator? = null
  4. private var animatorSet: AnimatorSet? = null
  5.  
  6. override fun onDraw(canvas: Canvas) {
  7. super.onDraw(canvas)
  8. canvas.drawArc(
  9. rectF, startAngle, sweepAngle + indeterminateSweepAngle, false, progressPaint
  10. )
  11. }
  12.  
  13. private fun startIndeterminateAnimation() {
  14. startAngle = DEFAULT_INDETERMINATE_POSITION
  15. sweepAnimator = ValueAnimator.ofFloat(MAX_ANGLE, DEFAULT_INDETERMINATE_POSITION).apply {
  16. duration = DEFAULT_ANIMATION_DURATION
  17. interpolator = AccelerateDecelerateInterpolator()
  18. }
  19. sweepAnimator?.addUpdateListener {
  20. val animatedValue = it.animatedValue as Float
  21. indeterminateSweepAngle = -animatedValue
  22. invalidate()
  23. }
  24.  
  25. rotateAnimator = ValueAnimator.ofFloat(startAngle, startAngle + MAX_ANGLE).apply {
  26. duration = DEFAULT_ROTATE_DURATION
  27. interpolator = AccelerateDecelerateInterpolator()
  28. repeatCount = ValueAnimator.INFINITE
  29. }
  30. rotateAnimator?.addUpdateListener {
  31. val animatedValue = it.animatedValue as Float
  32. startAngle = animatedValue
  33. invalidate()
  34. }
  35.  
  36. animatorSet = AnimatorSet()
  37. animationSetListener()
  38. animatorSet?.play(rotateAnimator)?.after(sweepAnimator)
  39. animatorSet?.start()
  40. }
  41.  
  42. private fun stopIndeterminateAnimation() {
  43. sweepAnimator?.cancel()
  44. rotateAnimator?.cancel()
  45. animatorSet?.cancel()
  46.  
  47. sweepAnimator = null
  48. rotateAnimator = null
  49. animatorSet = null
  50. }
  51.  
  52. fun stopAnimation() {
  53. animatorSet?.cancel()
  54. hideSweepAnimator?.cancel()
  55. }
  56.  
  57. private fun animationSetListener() {
  58. animatorSet?.addListener(object : Animator.AnimatorListener {
  59. override fun onAnimationCancel(animation: Animator?) {
  60. hideSweepAnimator = ValueAnimator.ofFloat(startAngle, 270F).apply {
  61. duration = DEFAULT_ROTATE_DURATION
  62. repeatCount = ValueAnimator.INFINITE
  63. }
  64. hideSweepAnimator?.addUpdateListener {
  65. val animatedValue = it.animatedValue as Float
  66.  
  67. invalidate()
  68. }
  69. hideSweepAnimator?.start()
  70. }
  71. })
  72. }
Advertisement
Add Comment
Please, Sign In to add comment