给一个初始颜色,一个目标颜色。计算中间变换的颜色

直接上核心代码,根据初始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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容