提供方法:
private int evaluateColor(int startValue, int endValue, float fraction) { if (fraction <= 0) { return startValue; } if (fraction >= 1) { return endValue; } int startInt = startValue; int startA = (startInt >> 24) & 0xff; int startR = (startInt >> 16) & 0xff; int startG = (startInt >> 8) & 0xff; int startB = startInt & 0xff; int endInt = endValue; int endA = (endInt >> 24) & 0xff; int endR = (endInt >> 16) & 0xff; int endG = (endInt >> 8) & 0xff; int endB = endInt & 0xff; return ((startA + (int) (fraction * (endA - startA))) << 24) | ((startR + (int) (fraction * (endR - startR))) << 16) | ((startG + (int) (fraction * (endG - startG))) << 8) | ((startB + (int) (fraction * (endB - startB)))); }用法如下:
layout.setBackgroundColor(evaluateColor(0xFFFFFFFF, 0xFF000000, progress1));设置起始颜色和终止颜色,并且定义一个插值
用例如下:
public class MyThread extends Thread{ @Override public void run() { for (int i=0;i<100;i++){ progress1=i/100f; try { runOnUiThread(new Runnable() { @Override public void run() { Log.e("yan",progress1+""); layout.setBackgroundColor(evaluateColor(0xFFFFFFFF, 0xFF000000, progress1)); } }); Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }