Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.animation.ValueAnimator;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.drawable.ColorDrawable;
- import android.view.animation.AccelerateInterpolator;
- public class AnimatedColorDrawable extends ColorDrawable {
- private int animationDuration;
- private int colorCurrent;
- private int colorOrigin;
- private ValueAnimator animator;
- public AnimatedColorDrawable(int colorOrigin, int animationDuration) {
- this.colorOrigin = colorOrigin;
- this.colorCurrent = colorOrigin;
- this.animationDuration = animationDuration;
- }
- @Override
- public void draw(Canvas canvas) {
- canvas.drawColor(colorCurrent);
- }
- public void setColorAnimated(int colorFinal) {
- setColorAnimated(colorFinal, 0);
- }
- public void setColorAnimated(final int colorFinal, int startDelay) {
- this.colorOrigin = colorCurrent;
- if (colorOrigin != colorFinal) {
- if (animator != null) {
- animator.cancel();
- }
- final int rOrigin = Color.red(colorOrigin);
- final int gOrigin = Color.green(colorOrigin);
- final int bOrigin = Color.blue(colorOrigin);
- final int rFinal = Color.red(colorFinal);
- final int gFinal = Color.green(colorFinal);
- final int bFinal = Color.blue(colorFinal);
- animator = ValueAnimator.ofFloat(0f, 1.0f);
- animator.setDuration(animationDuration);
- animator.setStartDelay(startDelay);
- animator.setInterpolator(new AccelerateInterpolator());
- animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
- @Override
- public void onAnimationUpdate(ValueAnimator animation) {
- float progress = (float) animation.getAnimatedValue();
- colorCurrent = Color.rgb((int) (rOrigin + (rFinal - rOrigin) * progress), (int) (gOrigin + (gFinal - gOrigin) * progress), (int) (bOrigin + (bFinal - bOrigin) * progress));
- invalidateSelf();
- }
- });
- animator.start();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement