一、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的更多相关文章

  1. Android5.0新特性-Material Design

    概述 2014年,Google携Android5.X重装归来.全新的UI设计和更加优化的性能,令开发人员眼前一亮 安装和配置Android5.0开发环境 开发Android还得靠AS.下载地址 htt ...

  2. Android5.0新特性——兼容性(support)

    兼容性 虽然Material Design新增了许多新特性,但是并不是所有新内容对对下保持了兼容. 使用v7包 v7 support libraries r21 及更高版本包含了以下Material ...

  3. Android5.0新特性之——按钮点击效果动画(涟漪效果)

    Android5.0 Material Design设计的动画效果 RippleDrawable涟漪效果 涟漪效果是Android5.0以后的新特性.为了兼容性,建议新建drawable-v21文件夹 ...

  4. Android5.0新特性:RecyclerView实现上拉加载更多

    RecyclerView是Android5.0以后推出的新控件,相比于ListView可定制性更大,大有取代ListView之势.下面这篇博客主要来实现RecyclerView的上拉加载更多功能. 基 ...

  5. Android5.0新特性

    1.Activity转场动画 首先,把之前启动Activity的代码改成下面的写法: (如果低版本需要加注解@RequiresApi(api = Build.VERSION_CODES.LOLLIPO ...

  6. Android5.0新特性——图片和颜色(drawable)

    图片和颜色 tint属性 tint属性一个颜色值,可以对图片做颜色渲染,我们可以给view的背景设置tint色值,给ImageView的图片设置tint色值,也可以给任意Drawable或者NineP ...

  7. Android5.0新特性——阴影和剪裁(shadow)

    阴影和剪裁 View的z属性 Material Design建议为了凸显布局的层次,建议使用阴影效果,并且Android L为了简化大家的工作,对View进行了扩展,能使大家非常方便的创建阴影效果: ...

  8. Android5.0新特性——全新的动画(animation)

    全新的动画 在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性.Material主题为控件和Activity的过渡提供了一些默认的动画,在android ...

  9. Android5.0新特性——Material Design简介

    Material Design Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干 ...

随机推荐

  1. jquery转义字符之单引号

    jquery动态生成html,并且html中包含方法时,如 var varHtml = '<input type="button" value="点我删除" ...

  2. 8、Java并发性和多线程-静态条件与临界区

    以下内容转自http://ifeve.com/race-conditions-and-critical-sections/: 在同一程序中运行多个线程本身不会导致问题,问题在于多个线程访问了相同的资源 ...

  3. Java并发:线程安全的单例模式

    转载请注明出处:jiq•钦'stechnical Blog 1.饿汉式 public class Singleton { private final static Singleton INSTANCE ...

  4. 战术网络安全检查表 | Symantec Connect

    "知己知彼,百战不殆: 不知彼而知己,一胜一负: 不知彼,不知己,每战必殆." 孙子(中国古代军事家). 孙子的话在今日仍能够使我们产生共鸣. 机构只有了解敌人和自己优缺点才能在持 ...

  5. win7下安装SQLSERVER2000

    来自为知笔记(Wiz)

  6. javascript中数组的定义及使用

    js <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  7. HDU 2489 Minimal Ratio Tree (dfs+Prim最小生成树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2489 Problem Description For a tree, which nodes and ...

  8. j2se回想

    执行Java程序. Java程序有两种方式一种是jar包.一种是class. 执行jar,Java -jar XXX.jar执行的时候,Java.exe调用GetMainClassName函数,该函数 ...

  9. 使用 Pascal 脚本编写网页, PWP 项目

    下载后得到 pwp.rar 文件. 解压到一个文件夹里面, 比方  e:\my_sys 文件夹下. 设计一下的脚本. 測试能否够执行. <%  uses sysutils; begin      ...

  10. CentOS-6.4-DVD系统中安装Oracle-11.2.0.4

    完整版见https://jadyer.github.io/2014/05/18/centos-install-oracle/ /** * CentOS-6.4-DVD系统中安装Oracle-11.2. ...