Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. import android.animation.ValueAnimator;
  2. import android.graphics.Canvas;
  3. import android.graphics.Color;
  4. import android.graphics.drawable.ColorDrawable;
  5. import android.view.animation.AccelerateInterpolator;
  6.  
  7. public class AnimatedColorDrawable extends ColorDrawable {
  8.  
  9. private int animationDuration;
  10. private int colorCurrent;
  11. private int colorOrigin;
  12. private ValueAnimator animator;
  13.  
  14. public AnimatedColorDrawable(int colorOrigin, int animationDuration) {
  15. this.colorOrigin = colorOrigin;
  16. this.colorCurrent = colorOrigin;
  17. this.animationDuration = animationDuration;
  18. }
  19.  
  20. @Override
  21. public void draw(Canvas canvas) {
  22. canvas.drawColor(colorCurrent);
  23. }
  24.  
  25. public void setColorAnimated(int colorFinal) {
  26. setColorAnimated(colorFinal, 0);
  27. }
  28.  
  29. public void setColorAnimated(final int colorFinal, int startDelay) {
  30. this.colorOrigin = colorCurrent;
  31. if (colorOrigin != colorFinal) {
  32. if (animator != null) {
  33. animator.cancel();
  34. }
  35.  
  36. final int rOrigin = Color.red(colorOrigin);
  37. final int gOrigin = Color.green(colorOrigin);
  38. final int bOrigin = Color.blue(colorOrigin);
  39. final int rFinal = Color.red(colorFinal);
  40. final int gFinal = Color.green(colorFinal);
  41. final int bFinal = Color.blue(colorFinal);
  42.  
  43. animator = ValueAnimator.ofFloat(0f, 1.0f);
  44. animator.setDuration(animationDuration);
  45. animator.setStartDelay(startDelay);
  46. animator.setInterpolator(new AccelerateInterpolator());
  47. animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
  48. @Override
  49. public void onAnimationUpdate(ValueAnimator animation) {
  50. float progress = (float) animation.getAnimatedValue();
  51. colorCurrent = Color.rgb((int) (rOrigin + (rFinal - rOrigin) * progress), (int) (gOrigin + (gFinal - gOrigin) * progress), (int) (bOrigin + (bFinal - bOrigin) * progress));
  52. invalidateSelf();
  53. }
  54. });
  55. animator.start();
  56. }
  57. }
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement