两个颜色取中间值
ArgbEvaluator.evaluate(float fraction,ObjectstartValue,ObjectendValue);
用于根据一个起始颜色值和一个结束颜色值以及一个偏移量生成一个新的颜色
https://developer.android.com/reference/android/animation/ArgbEvaluator.html
Bitmap中提取突出颜色
Palette
5.0加入的可以提取一个Bitmap中突出颜色的类
https://developer.android.com/reference/android/support/v7/graphics/Palette.html
// Palette的部分
Palette.generateAsync(bitmap,newPalette.PaletteAsyncListener() {
/**
* 提取完之后的回调方法
*/
@Override
publicvoidonGenerated(Palette palette) {
Palette.Swatch vibrant = palette.getVibrantSwatch();
/* 界面颜色UI统一性处理,看起来更Material一些 */
mPagerSlidingTabStrip.setBackgroundColor(vibrant.getRgb());
mPagerSlidingTabStrip.setTextColor(vibrant.getTitleTextColor());
// 其中状态栏、游标、底部导航栏的颜色需要加深一下,也可以不加,具体情况在代码之后说明
mPagerSlidingTabStrip.setIndicatorColor(colorBurn(vibrant.getRgb()));
mToolbar.setBackgroundColor(vibrant.getRgb());
if(android.os.Build.VERSION.SDK_INT >=21) {
Window window = getWindow();
// 很明显,这两货是新API才有的。
window.setStatusBarColor(colorBurn(vibrant.getRgb()));
window.setNavigationBarColor(colorBurn(vibrant.getRgb()));
}
}
});