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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin实例----android5.0新特性之palette相关的知识,希望对你有一定的参考价值。

一、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的主要内容,如果未能解决你的问题,请参考以下文章

android5.0新特性/新功能都有哪些

细数Android5.0到Android7.X 多媒体技术新特性

Android5.0美不胜收的新特性 Material Design

有史来最大改变 Android 5.0十大新特性

Android 5.X 新特性详解——Notification

Android 5.X 新特性详解——Notification