package com.cheng.animationstudy.customevaluator; import android.animation.TypeEvaluator; import android.graphics.Color; /** * */ public class HsvEvaluator implements TypeEvaluator<Integer> { @Override public Integer evaluate(float fraction, Integer startValue, Integer endValue) { float[] startHsv = new float[3]; float[] endHsv = new float[3]; float[] currentHsv = new float[3]; Color.colorToHSV(startValue, startHsv); Color.colorToHSV(endValue, endHsv); for (int i = 0; i < 3; i++) { currentHsv[i] = (1 - fraction) * startHsv[i] + fraction * endHsv[i]; } while (currentHsv[0] >= 360.0f) { currentHsv[0] -= 360.0f; } while (currentHsv[0] < 0.0f) { currentHsv[0] += 360.0f; } return Color.HSVToColor(currentHsv); } }