android5.0有一種新的功能,就是動態(tài)取色。在運(yùn)行時更具不同的圖片動態(tài)決定一些背景或者文字的顏色瞎抛。這是一種很酷的設(shè)計墙贱,他會使視覺上更具有沖擊力和新鮮感热芹,而不像統(tǒng)一色調(diào)那樣呆板。我們這就來介紹他的用法:
-
使用前需要引入
compile 'com.android.support:palette-v7:23.4.0'
-
Palette是什么惨撇?
它能讓你從圖像中提取突出的顏色伊脓。這個類能提取以下突出的顏色:
Vibrant(充滿活力的)
Vibrant dark(充滿活力的黑)
Vibrant light(充滿活力的亮)
Muted(柔和的)
Muted dark(柔和的黑)
Muted lighr(柔和的亮) -
如何使用?
既然是從圖片中提取顏色魁衙,那么首先我們得告訴它提取的圖片
Palette palette=Palette.from(傳入Bitmap)报腔;
通過上面的函數(shù)我們就可獲取傳入圖片的Palette對象,然后我們在調(diào)用它的generate()
方法即可獲取取色過后的Palette剖淀。
該方法還有一個重載的方法纯蛾,public AsyncTask<Bitmap, Void, Palette> generate(final PaletteAsyncListener listener)
,這是異步的方法在UI線程中可以使用這種。 -
Palette 的屬性
Palette.Swatch是一個提取顏色的樣本纵隔,通過該類可以提取到包含了我們需要的顏色內(nèi)容
返回一個有活力的顏色. Palette.getVibrantSwatch()
返回一個有活力的暗色. Palette.getDarkVibrantSwatch()
返回一個有活力的亮色. Palette.getLightVibrantSwatch()
返回一個柔和的顏色. Palette.getMutedSwatch()
返回一個柔和的暗色. Palette.getDarkMutedSwatch()
返回一個柔和的亮色. Palette.getLightMutedSwatch()
有活力的顏色和有活力的暗色是開發(fā)者使用最多的翻诉,具體使用哪一種取決于你自己 -
Swatch 屬性
getPopulation(): 返回被該樣本代表的像素的總數(shù)
getRgb(): 返回一個 RGB 顏色值
getHsl(): 返回一個 HSL顏色值.
getBodyTextColor(): 返回一個適合做內(nèi)容體顏色的顏色值
getTitleTextColor(): 返回一個適合做標(biāo)題顏色的顏色值
標(biāo)題的文本顏色會趨向于高透明度和低對比度,字體也會應(yīng)該大一點(diǎn)捌刮,body的文本顏色會趨向于高不透明度和高對比度碰煌。
Palette.from(傳入的Bitmap).generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(Palette palette) {
//獲取充滿活力的顏色
Palette.Swatch swatch=palette.getVibrantSwatch();
//獲取顏色,可以用來設(shè)置背景色
swatch.getRgb();
//獲取的顏色可以用來設(shè)置給文字
swatch.getTitleTextColor();
}
});