Kotlin实例----android5.0新特性之palette

dengdongqi · · 102 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、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后
 
 
 

本文来自:博客园

感谢作者:dengdongqi

查看原文:Kotlin实例----android5.0新特性之palette

102 次点击  
加入收藏 微博
上一篇:Kotlin环境搭建
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet