少年辛苦终身事,莫向光阴惰寸功。这篇文章主要讲述Kotlin实例----android5.0新特性之palette相关的知识,希望能为你提供帮助。
一、Palette的使用
使用Palette可以让我们从一张图片中拾取颜色,将拾取到的颜色赋予ActionBar,StatusBar以及UI背景色可以让界面色调实现统一或者加载不同图片时同步变化色调
【Kotlin实例----android5.0新特性之palette】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后
文章图片
推荐阅读
- Android学习笔记三(用Intent串联activity)
- appium入门基础
- 检测空值,以及会不会出现mapping类型不一致的问题
- 在Android上仿百度贴吧客户端Loading图标小球
- Android线性渐变
- appium===出错时截图的方法,自动截图
- cordova 跨平台APP版本升级
- 解决Azure Stack App Service部署报错一例
- android如何判断控件的显示或者隐藏