Palette非常好用,也非常好玩。 Palette的作用是从图像中提取突出的颜色,这样我们可以根据提取到的色值把它赋给Toolbar,标题,状态栏等,可以使我们的整个界面色调统一,效果非常好看。

Palette介绍

Palette调色板,可以很方便的让我们从图片中提取颜色。并且可以指定提取某种类型的颜色。

  1. Vibrant 鲜艳的
  2. Vibrant dark鲜艳的暗色
  3. Vibrant light鲜艳的亮色
  4. Muted 柔和的
  5. Muted dark柔和的暗色
  6. Muted light柔和的亮色

对图片取色是一个比较消耗性能的操作,其内部会对图片的像素值进来遍历以分析对比,所以我们要在异步线程中去完成。

如果操作本来就属于后台线程,可以使用:
Palette p = Palette.generate(Bitmap bitmap);
如果在主线程中,我们可以使用异步的方式:
Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {public void onGenerated(Palette palette) {  }
});

当操作完成后或者异步回调后,我们就可以使用以下方式来获取对应的色值了,并且可以在没有获取到的情况下之指定默认值:

p.getVibrantColor(int defaultColor);
p.getDarkVibrantColor(int defaultColor);
p.getLightVibrantColor(int defaultColor);
p.getMutedColor(int defaultColor);
p.getDarkMutedColor(int defaultColor);
p.getLightMutedColor(int defaultColor);

在使用palette之前,bitmap提供获取指定位置的像素值:

bitmap.getPixel(x,y)

但是该方式只能获取某一点的像素值,palette是对整个bitmap的所有像素值进行分析,并选出几个像素占比比较多的像素值,这样选择出来的色值更符合图片的整体色值。

Palette简单使用

Palette经常用于和ViewPager,Fragment搭配使用,当我们的Pager切换时伴随着Fragment的变化,而Fragment里的内容一般是不同的,所以每个Fragment里的一般视觉效果也是不同的,所以我们可以用Palette来去提取Fragment中的主色调,把这个主色调用于整体的UI风格。

步骤:

第一步:添加依赖
compile 'com.android.support:palette-v7:23.4.0'
第二步:创建Palette对象,并获取图片的颜色值
package com.itydl.palette;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.graphics.Palette;
import android.view.View;
import android.widget.ImageView;public class MainActivity extends AppCompatActivity {private Bitmap mBitmap;private View mV1;private View mV2;private View mV3;private View mV4,mV5,mV6;private ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {mV1 = findViewById(R.id.v1);mV2 = findViewById(R.id.v2);mV3 = findViewById(R.id.v3);mV4 = findViewById(R.id.v4);mV5 = findViewById(R.id.v5);mV6 = findViewById(R.id.v6);mImageView = (ImageView) findViewById(R.id.iv_show);}public void click(View v) {mImageView.setImageResource(R.mipmap.h7);mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.h7);/*  如果操作本来就属于后台线程,可以使用:*//*mPalette = Palette.generate(Bitmap mBitmap);*//*如果在主线程中,我们可以使用异步的方式:*/Palette.generateAsync(mBitmap, new Palette.PaletteAsyncListener() {public void onGenerated(Palette palette) {//柔和的mV1.setBackgroundColor(palette.getMutedColor(Color.BLACK));//设置默认颜色//鲜艳的暗色mV2.setBackgroundColor(palette.getDarkMutedColor(Color.BLACK));//柔和的亮色mV3.setBackgroundColor(palette.getLightMutedColor(Color.BLACK));//鲜艳的mV4.setBackgroundColor(palette.getVibrantColor(Color.BLACK));//鲜艳的暗色mV5.setBackgroundColor(palette.getDarkVibrantColor(Color.BLACK));//鲜艳的亮色mV6.setBackgroundColor(palette.getLightVibrantColor(Color.BLACK));}});}
}

运行程序:

下边的颜色都是从上边图片提取出来的。

最后看一下重要的应用场景,给出运行结果。对于案例,会在后边分析。

Android 5.0 调色 Palette调色功能相关推荐

  1. Android 5.0中的FDE功能实现

    标 题:  [分享]Android 5.0中的FDE功能实现 作 者: netsniffer 时 间: 2015-01-27,21:15:06 链 接: http://bbs.pediy.com/sh ...

  2. Android studio3.0开启抓包功能打包会使apk体积增大好几倍

    Android studio3.0开启抓包功能打包会使apk体积增大好几倍 Android studio3.0开启抓包功能打包会使apk体积增大好几倍: 今天尝试了下AS3.0抓包功能,还没怎么整明白 ...

  3. Android 8.0学习(31)---Android 8.0 中的 ART 功能改进

    Android 8.0 中的 ART 功能改进 在 Android 8.0 版本中,Android Runtime (ART) 有了极大改进.下面的列表总结了设备制造商可以在 ART 中获得的增强功能 ...

  4. Android 6.0 新特性和功能,系统和 API 行为更新

    Android 6.0 API 更新(Android M.API Level 23) 指纹身份验证 此版本提供了一些新的 API,在受支持的设备上,用户只需扫描其指纹即可完成身份验证,这些 API 还 ...

  5. Android 5.0发布日期/机型/功能传言汇总

    根据目前已知的信息,可以肯定的其甜点代号为"酸橙派"(Key Lime Pie):同时,一台运行Android 5.0系统的索尼手机的性能测试截图也被曝光,加大了传闻的真实性.随着 ...

  6. Android 11.0 系统去掉多用户功能

    1.概述 在11.0的系统产品开发中,对于系统原生是有多用户功能的,但是产品开发需求要求去掉多用户功能,systemui和Settings中的多用户功能都要求去掉,所以就需要找到系统关于多用户的地方去 ...

  7. android 10.0关闭gps定位功能

    1.概述 在10.0的产品定制化开发中,有些是不需要gps定位功能的,所以就需要屏蔽掉gps上报定位数据的功能,而在framework层中是通过/frameworks/base/location/ja ...

  8. android 11.0屏蔽短信功能(短信发送开关)

    1.概述 11.0定制化开发中,需要去掉短信发送功能,这就要从发送短信的流程中来分析了,从流程中了解是如何发送短信的,然后从短信的发送部分,根据系统属性来决定是否继续走完发送短信的流程 2.屏蔽短信功 ...

  9. Android 12.0 屏蔽短信功能(短信发送开关)

    1.概述 在12.0定制化开发中,在一些wifi产品中,需要去掉短信发送功能,这就要从发送短信的流程中来分析了,从流程中了解是如何发送短信的,然后从短信的发送部分,根据系统属性来决定是否继续走完发送短 ...

最新文章

  1. 天津12月计算机二级报名入口,2019年12月天津计算机二级考试报名入口已开通
  2. 清华通信本硕巨佬秋招经验总结,收割互联网大厂后端 SP/SSP offer,太强了!
  3. c++   string类
  4. 【算法学习笔记】83.排序辅助 动态规划 SJTU OJ 1282 修路
  5. HTTP之Last-Modified、Etage、If-Modified-Since理论与实践(C++ Qt实现)
  6. 国内外物联网平台初探(篇二:阿里云物联网套件)
  7. 基于JAVA+SSH+MYSQL的外卖点餐系统
  8. Java基础(三)——反射、代理
  9. SharePoint快速调试技巧
  10. Attit 现代编程语言重要特性 目录 第一章 可读性与开发效率 简单性 1 第一节 垃圾回收 1 第二节 自动垃圾回收 1 第三节 命名参数 函数多返回值 1 第四节 多语言 语言交互性 2 第五
  11. 【SPSS统计分析】SPSS19.0简体中文版安装教程(附SPSS19.0简体中文版下载)
  12. 来自雨林木风的Linux发行版: Ylmf Linux
  13. 转:多玩网总裁李学凌:在腾讯阴影下
  14. java多线程技术体系
  15. 平安人寿打造新一代年金保险产品:御享财富和御享金瑞
  16. 根据结束时间和开始时间计算天数
  17. 字幕助手 FastTitle 0.0.3 版本发布
  18. 赶时间发布 ChatGPT 竞品后,Google 遭员工反讽:太仓促、拙劣、非 Google Style
  19. 2019年计算机专业录取分数线排名,2019中国高校录取分数线排名 全国大学录取分数线表...
  20. Redis 6.2 启动关闭

热门文章

  1. 及时复盘的好处_复盘是什么意思,有什么意义
  2. 计算机领域哪个证值钱,最值钱且相对好考的证书有哪些?
  3. 课下作业(选做)第八周
  4. 【小工具类】将一个十进制数转化成二进制/四进制/八进制/16进制
  5. DevExpress控件学习总结
  6. 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】
  7. [数据库] MariaDB安装及使用
  8. 苹果Mac系统怎么彻底关闭开机的声音?
  9. php网页播放器源码免费,基于Flowplayer打造一款免费的WEB视频播放器附源码
  10. (1986年 - 2022年)沈先生的回忆篇