Palette是一個可以從圖片(Bitmap)中提取顏色的幫助類池摧,可以使UI更加美觀,根據圖片動態(tài)的顯示相應的顏色响牛。在Android5.0(API22)引入的歉嗓。
Palette可以提取的顏色:
Vibrant (有活力的);Vibrant dark(有活力的 暗色)舵抹;Vibrant light(有活力的 亮色)肪虎;
Muted (柔和的); Muted dark(柔和的 暗色)惧蛹; Muted light(柔和的 亮色)扇救。
使用方法:
module 中引用
implementation 'com.android.support:palette-v7:25.3.1'
使用步驟:
1.獲取Palette對象,也就是圖像調色板
獲取Palette對象有同步和異步兩種方式香嗓,建議使用異步獲取Palette對象
// Synchronous
Palette p = Palette.from(bitmap).generate();
// Asynchronous
Palette.from(bitmap).generate(new PaletteAsyncListener() { public void onGenerated(Palette p) { // Use generated instance } });
2.獲取從圖像調色板生成的色樣
可以獲取到六種色樣迅腔,但是有的時候獲取不到對應的色樣對象,必須注意非空判斷靠娱。
Palette.Swatch vibrant = palette.getVibrantSwatch();//有活力的 Palette.Swatch vibrantDark = palette.getDarkVibrantSwatch();//有活力的沧烈,暗色 Palette.Swatch vibrantLight = palette.getLightVibrantSwatch();//有活力的,亮色 Palette.Swatch muted = palette.getMutedSwatch();//柔和的 Palette.Swatch mutedDark = palette.getDarkMutedSwatch();//柔和的像云,暗色 Palette.Swatch mutedLight = palette.getLightMutedSwatch();//柔和的,亮色
3.從色樣中提取相應顏色
通過 getRgb() 可以得到最終的顏色值并應用到UI中锌雀。getBodyTextColor() 和 getTitleTextColor() 可以得到此顏色下文字適合的顏色,這樣很方便我們設置文字的顏色苫费,使文字看起來更加舒服汤锨。
swatch.getPopulation(): 樣本中的像素數量
swatch.getRgb(): 顏色的RBG值
swatch.getHsl(): 顏色的HSL值
swatch.getBodyTextColor(): 主體文字的顏色值
swatch.getTitleTextColor(): 標題文字的顏色值