一、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后
时间: 2024-10-13 09:07:38