直接上核心代码,根据初始Color的颜色值和终止的颜色值,还有颜色偏移量(0<=floatfraction<1)
public int get CurrentColor(int startColor,int endColor,float fraction) {
int startr = (startColor &0x00ff0000) >>>16;
int startg = (startColor &0x0000ff00) >>>8;
int startb = (startColor &0x000000ff);
int endr = (endColor &0x00ff0000) >>>16;
int endg = (endColor &0x0000ff00) >>>8;
int endb = (endColor &0x000000ff);
int diffr = endr - startr;
int diffg = endg - startg;
int diffb = endb - startb;
int currentr, currentg, currentb;
currentr = (int) (startr + diffr * fraction);
currentg = (int) (startg + diffg * fraction);
currentb = (int) (startb + diffb * fraction);
return 0xff000000+ (currentr <<16) + (currentg <<8) + currentb;
}
解释:将颜色值红绿蓝提取出来。计算色差。然后根据偏移量让startColor加上颜色偏移量。既得出最终的颜色
下面是我用这个api写的一个demo