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新特性-Material Design
概述 2014年,Google携Android5.X重装归来.全新的UI设计和更加优化的性能,令开发人员眼前一亮 安装和配置Android5.0开发环境 开发Android还得靠AS.下载地址 htt ...
- Android5.0新特性——兼容性(support)
兼容性 虽然Material Design新增了许多新特性,但是并不是所有新内容对对下保持了兼容. 使用v7包 v7 support libraries r21 及更高版本包含了以下Material ...
- Android5.0新特性之——按钮点击效果动画(涟漪效果)
Android5.0 Material Design设计的动画效果 RippleDrawable涟漪效果 涟漪效果是Android5.0以后的新特性.为了兼容性,建议新建drawable-v21文件夹 ...
- Android5.0新特性:RecyclerView实现上拉加载更多
RecyclerView是Android5.0以后推出的新控件,相比于ListView可定制性更大,大有取代ListView之势.下面这篇博客主要来实现RecyclerView的上拉加载更多功能. 基 ...
- Android5.0新特性
1.Activity转场动画 首先,把之前启动Activity的代码改成下面的写法: (如果低版本需要加注解@RequiresApi(api = Build.VERSION_CODES.LOLLIPO ...
- Android5.0新特性——图片和颜色(drawable)
图片和颜色 tint属性 tint属性一个颜色值,可以对图片做颜色渲染,我们可以给view的背景设置tint色值,给ImageView的图片设置tint色值,也可以给任意Drawable或者NineP ...
- Android5.0新特性——阴影和剪裁(shadow)
阴影和剪裁 View的z属性 Material Design建议为了凸显布局的层次,建议使用阴影效果,并且Android L为了简化大家的工作,对View进行了扩展,能使大家非常方便的创建阴影效果: ...
- Android5.0新特性——全新的动画(animation)
全新的动画 在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性.Material主题为控件和Activity的过渡提供了一些默认的动画,在android ...
- Android5.0新特性——Material Design简介
Material Design Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干 ...
随机推荐
- [luoguP1095] 守望者的逃离(DP)
传送门 这题....得考虑一些奇奇怪怪的复杂情况 不过也有简便方法. 枚举时间,先算出来只用魔法走的时间. 然后再枚举一遍时间,再算只走的时间,两个比较一下,取最游值. 代码 #include < ...
- [luoguP1130] 红牌(DP)
传送门 幼儿园DP. ——代码 #include <cstdio> #include <iostream> ; << ); int a[MAXN][MAXN], f ...
- hdu 3062 2-sat
#include<stdio.h> #include<string.h> #define N 2100 struct node { int u,v,next; }bian[N* ...
- kendo grid Hierarchy
Hierarchy grid中不能使用下面的这段代码,会造成传值传不过来,把下面的代码注释,不用models,直接用form表单传值就行,暂时没搞明白为什么 //parameterMap: funct ...
- Mysql 使用delete drop truncate 删除数据时受外键约束影响解决方案
先禁用数据库的外键约束: set foreign_key_checks=0; 进行删除操作 delete.drop.truncate 恢复数据库外键约束: set foreign_key_checks ...
- Bitmap工具类BitmapHelper
BitmapHelper 提供一些获取本地缩略图,获取网络图片.dp与px的相互转换等方法. import java.io.ByteArrayInputStream; import java.io.B ...
- Android Message和obtainMessage的差别
前几天须要实现一个以太网功能就看了以太网的源代码部分,看见了源代码部分在消息处理时,发现有一些不同的地方: 平时我在处理消息时: 1.首先创建Handler对象: private Hand ...
- jQuery 中ready与load事件
jquey有3种针对文档加载的方法: //document ready $(document).ready(function(){ //...代码... }) //document ready 简写 ...
- Asp.Net实现JS前台带箭头的流程图方法总结!(个人笔记,信息不全)
Asp.Net实现JS前台带箭头的流程图方法总结!(持续更新中) 一.返回前台json格式 json5 = "[{\"Id\":2259,\"Name\&quo ...
- Spark SQL Catalyst源代码分析之UDF
/** Spark SQL源代码分析系列文章*/ 在SQL的世界里,除了官方提供的经常使用的处理函数之外.一般都会提供可扩展的对外自己定义函数接口,这已经成为一种事实的标准. 在前面Spark SQL ...

