public class ColorHelper {
public static int setColorAlpha(@ColorInt int color, float alpha) {
return setColorAlpha(color, alpha, true);
}
public static int setColorAlpha(@ColorInt int color, float alpha, boolean override) {
int origin = override ? 0xff : (color >> 24) & 0xff;
return color & 0x00ffffff | (int) (alpha * origin) << 24;
}
public static int computeColor(@ColorInt int fromColor, @ColorInt int toColor, float fraction){
fraction = QMUILangHelper.constrain(fraction, 0f, 1f);
int minColorA = Color.alpha(fromColor);
int maxColorA = Color.alpha(toColor);
int resultA = (int) ((maxColorA - minColorA) * fraction) + minColorA;
int minColorR = Color.red(fromColor);
int maxColorR = Color.red(toColor);
int resultR = (int) ((maxColorR - minColorR) * fraction) + minColorR;
int minColorG = Color.green(fromColor);
int maxColorG = Color.green(toColor);
int resultG = (int) ((maxColorG - minColorG) * fraction) + minColorG;
int minColorB = Color.blue(fromColor);
int maxColorB = Color.blue(toColor);
int resultB = (int) ((maxColorB - minColorB) * fraction) + minColorB;
return Color.argb(resultA, resultR, resultG, resultB);
}
public static String colorToString(@ColorInt int color) {
return String.format("#%08X", color);
}
}