標籤:mil out ges nbsp his ttext nta rri tac
一、Palette的使用
使用Palette可以讓我們從一張圖片中拾取顏色,將拾取到的顏色賦予ActionBar,StatusBar以及UI背景色可以讓介面色調實現統一或者載入不同圖片時同步變化色調
1、使用Palette需要添加以下依賴:
implementation ‘com.android.support:palette-v7:26.0.2‘(Android Studio 3.0 Beta 5)
2、ImageView 中擷取Bitmap對象(或者其他BItmap對象)
bitmap = ((iv as ImageView).getDrawable() as BitmapDrawable).bitmap
3、傳入Bitmap即可擷取Palette對象,以下是同步和非同步使用方式:
//同步擷取,需要在子線程中使用;否則會造成主線程阻塞
val palette : Palette = Palette.from(bitmap).generate()
//非同步擷取,可以在主線程中使用
Palette.from(bitmap).generate(Palette.PaletteAsyncListener { palette: Palette? ->
//.........對Palette對象進行操作...........//
})
4、得到Palette對象後,擷取其中的顏色,顏色對應如下:
//1.活力顏色
val vibrant: Palette.Swatch? = palette?.vibrantSwatch
//2.亮的活力顏色
val lightbarant: Palette.Swatch? = palette?.lightMutedSwatch
//3.暗的活力顏色
val darkvibrant: Palette.Swatch? = palette?.darkVibrantSwatch
//4.柔色
val Munted: Palette.Swatch? = palette?.mutedSwatch
//5.亮的柔色
val lightmuted: Palette.Swatch? = palette?.lightMutedSwatch
//6.暗的柔色
val darkmuted: Palette.Swatch? = palette?.darkMutedSwatch
5、使用擷取到的顏色設定到其他UI中
// 修改Actionbar背景顏色
val bar :ActionBar = this!!.supportActionBar!!
bar.setBackgroundDrawable(ColorDrawable(vibrant?.rgb!!))
// 修改按鈕文字的顏色
bt.setTextColor(vibrant?.rgb!!)
二、執行個體代碼
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
bitmap = ((iv as ImageView).getDrawable() as BitmapDrawable).bitmap
bt.setOnClickListener {
Palette.from(bitmap).generate(Palette.PaletteAsyncListener { palette: Palette? ->
//1.活力顏色
val vibrant: Palette.Swatch? = palette?.vibrantSwatch
//2.亮的活力顏色
val lightbarant: Palette.Swatch? = palette?.lightMutedSwatch
//3.暗的活力顏色
val darkvibrant: Palette.Swatch? = palette?.darkVibrantSwatch
//4.柔色
val Munted: Palette.Swatch? = palette?.mutedSwatch
//5.亮的柔色
val lightmuted: Palette.Swatch? = palette?.lightMutedSwatch
//6.暗的柔色
val darkmuted: Palette.Swatch? = palette?.darkMutedSwatch
// 修改Actionbar背景顏色
val bar :ActionBar = this!!.supportActionBar!!
bar.setBackgroundDrawable(ColorDrawable(vibrant?.rgb!!))
// 修改按鈕文字的顏色
bt.setTextColor(vibrant?.rgb!!)
})
}
}
三、
點擊Button後
Kotlin執行個體----android5.0新特性之palette