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后 
 
 
 
时间: 2024-10-13 09:07:38

Kotlin实例----android5.0新特性之palette的相关文章

Android5.0 新特性学习总结

参考文章: 极客学院 –Material Design 中文版图文教程 几行代码,让你的 APP 变得花俏-Android Design Support Library 代码实验 material design 的android开源代码整理 低版本android上实现Material design应用 Android5.0版本,推出了Material Design的概念,这是在设计上Android的又一大突破.对应的程序实现上就有如 Theme.Material.Light. Theme.Mat

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

兼容性 虽然Material Design新增了许多新特性,但是并不是所有新内容对对下保持了兼容. 使用v7包 v7 support libraries r21 及更高版本包含了以下Material Design特性: 使用Theme.AppCompat主题包含调色板主体属性,可以对应用的主题做统一的配色,但是不包括状态栏和底部操作栏 RecyclerView和CardView被独立出来,只要引入jar包,即可适配7以上的所有版本. Palette类用于从图片提取主色调 系统组件 Theme.A

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

RecyclerView是Android5.0以后推出的新控件,相比于ListView可定制性更大,大有取代ListView之势.下面这篇博客主要来实现RecyclerView的上拉加载更多功能. 基本思路是让RecyclerView的Adapter加载两种布局,第一个布局来显示主界面,第二个布局来显示上拉加载时的提示信息,让RecyclerView监听是否滑动到最后一个item,如果是,则调用上拉刷新的逻辑,拉取远程数据,并显示第二个布局.等加载完毕时,刷新 Adapter,并隐藏第二个布局.

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

图片和颜色 tint属性 tint属性一个颜色值,可以对图片做颜色渲染,我们可以给view的背景设置tint色值,给ImageView的图片设置tint色值,也可以给任意Drawable或者NinePatchDrawable设置tint色值. 在应用的主题中也可以通过设置 android:tint 来给主题设置统一的颜色渲染. tint的渲染模式有总共有16种,xml文件中可以使用6种,代码中我们可以设置16种,渲染模式决定了渲染颜色和原图颜色的取舍和合成规则: PorterDuff.Mode.

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

阴影和剪裁 View的z属性 Material Design建议为了凸显布局的层次,建议使用阴影效果,并且Android L为了简化大家的工作,对View进行了扩展,能使大家非常方便的创建阴影效果: 给View添加了一个新的属性:Z 属性,用于描述视图距离它父视图的高度: 在5.0之前,我们的视图都是二维的,只有x轴和y轴,现在,android新增了z轴.x轴和y轴描述了一个view的大小和位置,而z轴描述了view在父视图上抬起的视觉,体现效果就是阴影.下图的两个view的z属性分别为2dp和

安卓5.0新特性之Palette

根据图片来决定标题的颜色和标题栏的背景色,这样视觉上更具有冲击力和新鲜感,而不像统一色调那样呆板. Palette这个类能提取以下突出的颜色: Vibrant(充满活力的) Vibrant dark(充满活力的黑) Vibrant light(充满活力的亮) Muted(柔和的) Muted dark(柔和的黑) Muted lighr(柔和的亮) 使用方法:传递Bitmap对象给Palette.generate()静态方法.如果不适用线程,则调用Palette.generateAsync()方

使用Github依赖库实现Android5.0新特性——CardView

之前自己使用support-v7下自带的cardview实现了CardView效果.后来在github中发现了有人写好了很好的库支持,完美实现了CardView的向下兼容.不再需要support-v7,实现起来更为方便.参考的Github的主页为:https://github.com/gabrielemariotti/cardslib   .感谢博主.具体实现步骤如下: (1)在Android Studio中新建一个项目,在build.gradle(Module:app)中加入以下代码,注意是在

Android5.0新特性——新增的Widget(Widget)

新增的Widget RecyclerView RecyclerView是ListView的升级版,它具备了更好的性能,且更容易使用.和ListView一样,RecyclerView是用来显示大量数据的容器,并通过复用有限数量的View,来提高滚动时的性能.当你的视图上的元素经常动态的且有规律的改变时候,可以使用RecyclerView控件. 与ListView不同的是RecyclerView现在不再负责布局,只专注于复用机制,布局交由LayoutManager来管理. RecyclerView仍

C#4.0新特性之协变与逆变实例分析

本文实例讲述了C#4.0新特性的协变与逆变,有助于大家进一步掌握C#4.0程序设计.具体分析如下: 一.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见.C#4.0中的协变与逆变(Covariance and contravariance)有了进一步的完善,主要是两种运行时的(隐式)泛型类型参数转换.简单来讲,所谓协变(Covariance)是指把类型从"小"升到"大",比如从子类升级到父类:逆变则是指从"大"变到