Android基础汇总
#1 原理:
Palette是一个类似调色板的工具类,根据传入的bitmap,提取出主体颜色,使得图片和颜色更加搭配,界面更协调。
Palette 可以从一张图片中提取颜色,我们可以把提取的颜色融入到App UI中,可以使UI风格更加美观融洽。比如,我们可以从图片中提取颜色设置给ActionBar做背景颜色,这样ActionBar的颜色就会随着显示图片的变化而变化。通俗的说,就是从一张图片中获取不同风格的源于图片的颜色
#2 效果图
#3 使用
1 compile 'com.android.support:palette-v7:23.4.0'
Palette可以提取的颜色如下:
● Vibrant (有活力的)
● Vibrant dark(有活力的 暗色)
● Vibrant light(有活力的 亮色)
● Muted (柔和的)
● Muted dark(柔和的 暗色)
● Muted light(柔和的 亮色)
第一步 compile 'com.android.support:palette-v7:23.4.0'
第一步,我们需要通过一个Bitmap对象来生成一个对应的Palette对象。 Palette 提供了四个静态方法用来生成对象。
● Palette generate(Bitmap bitmap)
● Palette generate(Bitmap bitmap, int numColors)
● generateAsync(Bitmap bitmap, PaletteAsyncListener listener)
● generateAsync(Bitmap bitmap, int numColors, final PaletteAsyncListener listener)
不难看出,生成方法分为generate(同步)和generateAsync(异步)两种,如果图片过大使用generate方法,可能会阻塞主线程,我们更倾向于使用generateAsync的方法,其实内部就是创建了一个AsyncTask。generateAsync方法需要一个PaletteAsyncListener对象用于监听生成完毕的回调。除了必须的Bitmap参数外,还可以传入一个numColors参数指定颜色数,默认是 16。
第二步,得到Palette对象后,就可以拿到提取到的颜色值
● Palette.getVibrantSwatch()
● Palette.getDarkVibrantSwatch()
● Palette.getLightVibrantSwatch()
● Palette.getMutedSwatch()
● Palette.getDarkMutedSwatch()
● Palette.getLightMutedSwatch()
第三步,使用颜色,上面get方法中返回的是一个 Swatch 样本对象,这个样本对象是Palette的一个内部类,它提供了一些获取最终颜色的方法。
● getPopulation(): 样本中的像素数量
● getRgb(): 颜色的RBG值
● getHsl(): 颜色的HSL值
● getBodyTextColor(): 主体文字的颜色值
● getTitleTextColor(): 标题文字的颜色值
通过 getRgb() 可以得到最终的颜色值并应用到UI中。getBodyTextColor() 和 getTitleTextColor() 可以得到此颜色下文字适合的颜色,这样很方便我们设置文字的颜色,使文字看起来更加舒服。
#4 Demo:
t1 = (TextView) findViewById(R.id. t1);
t2 = (TextView) findViewById(R.id. t2);
t3 = (TextView) findViewById(R.id. t3);
t4 = (TextView) findViewById(R.id. t4);
t5 = (TextView) findViewById(R.id. t5);
t6 = (TextView) findViewById(R.id. t6);
Bitmap bitmap = BitmapFactory. decodeResource(getResources(), R.drawable. f);
Palette. from(bitmap).generate( new Palette.PaletteAsyncListener() {
//发生主线程 Palette调色板 总共六种颜色
@Override
public void onGenerated(Palette palette) {
//柔和而暗的颜色
int darkMutedColor= palette.getDarkMutedColor(Color. BLUE);
//鲜艳和暗的颜色
int darkVibrantColor= palette.getDarkVibrantColor(Color. BLUE);
//亮和鲜艳的颜色
int lightVibrantColor=palette.getLightVibrantColor(Color. BLUE);
//亮和柔和的颜色
int lightMutedColor=palette.getLightMutedColor(Color. BLUE);
//柔和颜色
int mutedColor=palette.getMutedColor(Color. BLUE);
int vibrantColor=palette.getVibrantColor(Color. BLUE);
t1.setBackgroundColor(darkMutedColor);
t2.setBackgroundColor(darkVibrantColor);
t3.setBackgroundColor(lightVibrantColor);
t4.setBackgroundColor(lightMutedColor);
t5.setBackgroundColor(mutedColor);
t6.setBackgroundColor(vibrantColor);
#4 效果
原始图片
效果图
30_Palette调色板相关推荐
- CSS单位分析及CSS颜色表示法、颜色表(调色板)
CSS单位主要分析em.rem.fr这三个较难理解的单位吧,平常的px.%.cm那些就不谈了嘛. px在不同场景之下为同样的值,我们把它称作绝对单位,而em和rem受外部因素的影响下而改变,因此称作相 ...
- 使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果
使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果 1. 效果图 2. 源码 参考 这篇博客将使用python,opencv绘制调色板及圆形来模拟霓虹的渐变效果. 1. 效果图 可以构 ...
- 创建属于自己的调色板
本文转载自"R语言中文社区",已获授权. 作者简介Introduction taoyan:R语言中文社区特约作家,伪码农,R语言爱好者,爱开源. 个人博客: https://ytl ...
- Python在Seaborn中手动指定调色板颜色进行数据可视化颜色自定义实战(Manually Specify Palette Colors in Seaborn)
Python在Seaborn中手动指定调色板颜色进行数据可视化颜色自定义实战(Manually Specify Palette Colors in Seaborn) 目录
- R语言使用ggplot2包使用geom_density()函数绘制分组密度图(自定义调色板、brewer、灰度比例)实战(density plot)
R语言使用ggplot2包使用geom_density()函数绘制分组密度图(自定义调色板.brewer.灰度比例)实战(density plot) 目录 R语言使用ggplot2包使用geom_de ...
- R语言使用treemap包中的treemap函数可视化treemap图:treemap将分层数据显示为一组嵌套矩形、自定义设置treemap图的调色板、自定义设置treemap标题字体的大小
R语言使用treemap包中的treemap函数可视化treemap图:treemap将分层数据显示为一组嵌套矩形.自定义设置treemap图的调色板.自定义设置treemap标题字体的大小 目录
- R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色调色板配置)实战
R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色调色板配置)实战 目录 R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框 ...
- R语言使用ggpubr包的ggbarplot函数可视化水平偏差条形图(计算数值的z-score、自定义填充色、自定义条形边缘色、自定义调色板、条形图全局排序从小到大、文本标签角度、添加图例标签、轴标签
R语言使用ggpubr包的ggbarplot函数可视化水平偏差条形图(计算数值的z-score.自定义填充色.自定义条形边缘色.自定义调色板.条形图全局排序从小到大.文本标签角度.添加图例标签.轴标签 ...
- seaborn使用boxplot函数进行箱图可视化(使用色彩调色板自定义设置箱图的颜色、在boxplot函数内设置palette参数自定义调色板)
seaborn使用boxplot函数进行箱图可视化(使用色彩调色板自定义设置箱图的颜色.在boxplot函数内设置palette参数自定义调色板) 目录
最新文章
- php如何从左往右轮播,js实现从左向右滑动式轮播图效果
- 辨析*P++,*(p++),*(++p),++(*p),*(P--),*(--P)
- Seafile 1.3 发布,文件同步和协作平台
- script地下状态栏效果
- arm-linux-androideabi-addr2line
- 区块链 不可能三角是什么
- 何为全栈工程师?你是否应该成为一名全栈工程师?
- IntelliJ IDEA常用快捷键
- iOS开发1小时快速入门
- Guice 的工作原理
- 基于udp端口转发程序设计(一)
- ai作文批改_网易有道词典再推AI作文批改新功能
- Relay和Rendezvous
- android api 和版本对应表汇总
- 2020牛客暑期多校训练营(第九场)F.Groundhog Looking Dowdy
- ios VM snapshot invalid and could not be inferred from settings
- (非常实用)局部解剖学重点
- c语言五子棋游戏心得体会,下五子棋执白子之心得
- 【云速建站】购买前的指导
- Android Studio3.0没有Launch Standalone SDK Manager
热门文章
- ROS-PCL-读写点云PCD文件
- 历年真题自考c语言,C 自考历年真题小集.docx
- cf计算机中丢失msvcp100,CF修复dll文件工具
- 操作系统真相还原学习笔记
- dfuse 与 EOS Nation 推出官方 dfuse 社区版服务
- 中小医院信息系统的安全管理
- 蒙文计算机,蒙古文整词计算机生成理论研究
- linux达芬奇安装教程,达芬奇Davinci Resolve安装到Centos8系统配置|详细教程
- Leetcode 第1342题:将数字变成 0 的操作次数 (位运算解题法详解)
- 羊皮卷——人生的财富