View学习(三)--颜色

Android 自定义 View - 颜色选取器(水平、竖直) Android 自定义 View - 颜色选取器(水平、竖直)Android 自定义 View - 颜色选取器(水平、竖直)类似 SeekBar 的方式通过滑动选择颜色。 阅读详情

颜色

简要介绍安卓中的颜色相关内容,包括颜色的定义,创建颜色的几种方式,以及颜色的混合模式等。

一.简单介绍颜色

安卓支持的颜色模式:

颜色模式    备注
ARGB8888    四通道高精度(32位)
ARGB4444    四通道低精度(16位)
RGB565  屏幕默认模式(16位)
Alpha8  仅有透明通道(8位)

PS:其中字母表示通道类型,数值表示该类型用多少位二进制来描述。如ARGB8888则表示有四个通道(ARGB),每个对应的通道均用 8 位来描述。

注意:我们常用的是ARGB8888和ARGB4444,而在所有的安卓设备屏幕上默认的模式都是RGB565,请留意这一点。

以ARGB8888为例介绍颜色定义:

类型        解释    0(0x00)    255(0xff)
A(Alpha)    透明度    透明      不透明
R(Red)      红色      无色      红色
G(Green)    绿色      无色      绿色
B(Blue)     蓝色      无色      蓝色

其中 A R G B 的取值范围均为0255(即16进制的0x000xff)

A 从ox00到oxff表示从透明到不透明。

RGB 从0x00到0xff表示颜色从浅到深。

当RGB全取最小值(0或0x000000)时颜色为黑色,全取最大值(255或0xffffff)时颜色为白色

二.几种创建或使用颜色的方式
1.java中定义颜色
int color = Color.GRAY; //灰色

由于Color类提供的颜色仅为有限的几个,通常还是用ARGB值进行表示。

int color = Color.argb(127, 255, 0, 0);   //半透明红色

int color = 0xaaff0000;                   //带有透明度的红色
2.在xml文件中定义颜色

在/res/values/color.xml 文件中如下定义:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#ff0000</color>
    <color name="green">#00ff00</color>
</resources>

详解: 在以上xml文件中定义了两个颜色,红色和蓝色,是没有alpha(透明)通道的。

定义颜色以‘#’开头,后面跟十六进制的值,有如下几种定义方式:

  #f00            //低精度 - 不带透明通道红色
  #af00           //低精度 - 带透明通道红色

  #ff0000         //高精度 - 不带透明通道红色
  #aaff0000       //高精度 - 带透明通道红色
3.在java文件中引用xml中定义的颜色:
int color = getResources().getColor(R.color.mycolor);

int color = getColor(R.color.myColor);    //API 23 及以上支持该方法
4.在xml文件(layout或style)中引用或者创建颜色
<!--在style文件中引用-->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/red</item>
</style>  

android:background="@color/red"     //引用在/res/values/color.xml 中定义的颜色

android:background="#ff0000"        //创建并使用颜色
三.取色工具

颜色都是用RGB值定义的,而我们一般是无法直观的知道自己需要颜色的值,需要借用取色工具直接从图片或者其他地方获取颜色的RGB值。

1.屏幕取色工具

取色调色工具,可以从屏幕取色或者使用调色板调制颜色,非常小而精简。

点击这里获取屏幕取色工具

2.Picpick

功能更加强大的工具:PicPick。

PicPick具备了截取全屏、活动窗口、指定区域、固定区域、手绘区域功能,支持滚动截屏,屏幕取色,支持双显示器,具备白板、屏幕标尺、直角座标或极座标显示与测量,具备强大的图像编辑和标注功能。

点击这里获取PicPick

四.颜色混合模式(Alpha通道相关)

通过前面介绍我们知道颜色一般都是四个通道(ARGB)的,其中(RGB)控制的是颜色,而A(Alpha)控制的是透明度。

因为我们的显示屏是没法透明的,因此最终显示在屏幕上的颜色里可以认为没有Alpha通道。Alpha通道主要在两个图像混合的时候生效。

默认情况下,当一个颜色绘制到Canvas上时的混合模式是这样计算的:

(RGB通道) 最终颜色 = 绘制的颜色 + (1 - 绘制颜色的透明度) × Canvas上的原有颜色。

注意:

  1. 这里我们一般把每个通道的取值从0(ox00)到255(0xff)映射到0到1的浮点数表示。

  2. 这里等式右边的“绘制的颜色”、“Canvas上的原有颜色”都是经过预乘了自己的Alpha通道的值。如绘制颜色:0x88ffffff,那么参与运算时的每个颜色通道的值不是1.0,而是(1.0 * 0.5333 = 0.5333)。 (其中0.5333 = 0x88/0xff)

使用这种方式的混合,就会造成后绘制的内容以半透明的方式叠在上面的视觉效果。

其实还可以有不同的混合模式供我们选择,用Paint.setXfermode,指定不同的PorterDuff.Mode。

下表是各个PorterDuff模式的混合计算公式:(D指原本在Canvas上的内容dst,S指绘制输入的内容src,a指alpha通道,c指RGB各个通道)

混合模式        计算公式
ADD         Saturate(S + D)
CLEAR       [0, 0]
DARKEN      [Sa + Da - SaDa, Sc(1 - Da) + Dc*(1 - Sa) + min(Sc, Dc)]
DST         [Da, Dc]
DST_ATOP    [Sa, Sa * Dc + Sc * (1 - Da)]
DST_IN      [Sa * Da, Sa * Dc]
DST_OUT     [Da * (1 - Sa), Dc * (1 - Sa)]
DST_OVER    [Sa + (1 - Sa)*Da, Rc = Dc + (1 - Da)*Sc]
LIGHTEN     [Sa + Da - SaDa, Sc(1 - Da) + Dc*(1 - Sa) + max(Sc, Dc)]
MULTIPLY    [Sa * Da, Sc * Dc]
SCREEN      [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc]
SRC         [Sa, Sc]
SRC_ATOP    [Da, Sc * Da + (1 - Sa) * Dc]
SRC_IN      [Sa * Da, Sc * Da]
SRC_OUT     [Sa * (1 - Da), Sc * (1 - Da)]
SRC_OVER    [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc]
XOR         [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]

用示例图来查看使用不同模式时的混合效果如下(src表示输入的图,dst表示原Canvas上的内容):

五.参考资料

Android图形动画

X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (二) 摩尔纹的产生机理 1,横向摩尔纹的表现 2,纵向摩尔纹的表现 3,摩尔纹在pitch = 143μm(注:pitch为采样间隔/周期)的FPD上的表现。 4,摩尔纹的危害(严重的影响了临床诊断) 5,摩尔纹对胸片肺部肺纹理的破坏 6,滤线栅的频率(滤线栅生产厂家的产品参数)。判断摩尔纹产生的重要依据之一 7,DR平板探测器的采样频率/空间极限分辨率 l......... 阅读详情

相关推荐

摩尔线程GPU实战:5分钟搞定AI模型部署(含Docker避坑指南)

本文详细介绍了摩尔线程GPU在AI模型部署中的实战应用,包括环境配置、Docker避坑指南及性能优化技巧。通过5分钟快速部署指南,帮助开发者高效利用摩尔线程GPU进行AI模型推理,特别针对常见兼容性问题提供解决方案,显著提升部署效率。

weixin_28736335的博客 451

最新颜色代码

最近在弄布局颜色时候发现自己对颜色的定义差的无地自容所以特意找了颜色代码来记录。     #000000   #2F0000   #600030   #460046   #28004D   #272727

程序员小跃的专栏 3万+

超详细!动态规划详解分析(典型例题分析和对比,附源码)

为啥要使用动态规划?什么时候使用动态规划?以下是我的一些理解和心得,如果你感兴趣,就接着往下看吧。 对您有帮助的话记得给我点个赞哟! 动态规划的基本思想 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。 动态规划算法与分治法类似,其基本思想也是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中 得到原有问题的解。与分治法不同的是,动态规划经分解后得到的子问题

qq_44398094的博客 8万+

RGB_565,ALPHA_8,ARGB_4444,ARGB_8888

我们项目中使用bitmap的时候可能会遇到这些参数,具体这些参数是用来做什么的呢?A bitmap configuration describes how pixels are stored.答案是:这四个参数是用来描述bitmap被存储时的像素值。还是不懂?简单解释下! RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式

梁超杰 1万+

单细胞marker基因表达密度图-(还有一个包装函数)

我们借助Nebulosa,将上面的过程包装为一个函数,还是那句话,受累麻烦的事我们来解决,您轻松即可,先看看函数参数:需要注意的是,如果你只想框选某一类celltype,理想模式是这群celltype是单独聚类的,没有散落在其他类群,否则将会全部框选,效果不好,建议使用AI/PS添加。需要注意,这里我算是投机取巧了,用了一个和这个作图毫无关系的包ggnetwork,主要的目的是用他的theme_blank()主题,一次性将所有清空,当然也可以自己慢慢写,不过有现成的,为啥不用呢?这质感不就上去了嘛。

qq_42090739的博客 1366

MATLAB 论文复现——基于虚拟储能的电动汽车充放电调度策略及激励评价

文章基于虚拟储能聚合体仿真模型优化电动汽车充放电调度,并采用复合权重评价电动汽车的充电激励。根据电动汽车灵活性和系统稳定性衡量其贡献大小,并通过模糊推理系统模拟用户的充电意愿,实现对电动汽车充电的引导和优化。[1]陈朔,胡昊,方慧敏,等.基于虚拟储能的电动汽车充放电调度策略及激励评价[J/OL].系统仿真学报,1-12[2024-07-24].https://doi.org/10.16182/j.issn1004731x.joss.23-1316.基于虚拟储能的电动汽车充放电调度策略及激励评价。

sjr1478的博客 363

收集的英语资源(不断更新)

常用谚语100句托福100句网友300句英文学习网站常用谚语1001.Health is happiness.健康就是幸福。 2.Hear all parties.兼听则明。 3.Heaven never helps the man who will not act.自己不动,叫天何用。 4.He is a fool that forgets himself.愚者忘乎所以。 5.He is a g...

weixin_34163553的博客 3万+

matlab安装libsvm常见问题

matlab安装libsvm常见问题 libsvm的官网链接:LIBSVM -- A Library for Support Vector Machines.

cqujcy的博客 1535

颜色代码表[转]

红色和粉红色,以及它们的16进制代码。 #990033 #CC6699 #FF6699 #FF3366 #993366 #CC0066 #CC0033 #FF0066 #FF0033 ..#CC3399.. #FF3399 #FF9999 #FF99CC #FF0099 #CC3366 #FF66CC #FF...

weixin_30485379的博客 6064

从入门到精通:3D视觉与SLAM实战全流程 mastery 教程

本文系统介绍了3D视觉与SLAM技术的应用前景、核心技术和实战路径。3D视觉通过RGB-D相机、激光雷达等传感器获取环境三维信息,SLAM技术实现自主定位与地图构建,二者结合广泛应用于自动驾驶、机器人导航等领域。文章详细拆解了点云处理、视觉里程计、回环检测等关键技术,并提供了ORB-SLAM2算法复现、语义SLAM开发的实战教程,涵盖硬件选型、环境配置到代码实现全流程。最后规划了从入门到专家的学习路径,推荐了相关书籍、开源项目和数据集资源,为读者掌握这一前沿技术提供了完整指南。

m0_71589036的博客 134

实现电脑同时上内网和外网(或通过外网访问到该电脑通过该电脑访问内网)

一、需求描述 目前使用的公司网络只能够上内网,但是又有上外网查资料的需求: ①想要实现电脑既能上内网的同时也可以上外网; ②想要使用其他外网电脑使用外网连接到该电脑,通过该电脑访问内部的网络内容。 二、准备内容 电脑必须具备两个网卡,即:可以同时连接内网和外网(比如我的笔记本就可以:使用网线连接笔记本网口与内网通讯,使用WIFI连接手机热点访问外部网络); 注意:如果只有一个网口,可以另外购买USB的无线网卡来实现上网卡。 三、实现电脑同时上内网和外网的操作步骤 3.1、网络拓扑图 ..

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2万+

背景色#888888

背景色#888888

kbx8916的博客 1万+

YOLOv11改进 - C3k2融合 | C3k2融合细节增强卷积DEConv(Detail-Enhanced Convolution)提升细微特征提取能力

本文介绍了细节增强卷积(DEConv)技术在YOLOv11中的结合应用。DEConv由标准卷积层和多种差异卷积层并行组成,通过计算像素差异和卷积操作增强特征提取能力,还采用重参数化技术简化模型结构。其优势在于能更好捕捉高频信息、保持参数数量不变且降低推理计算成本。我们将DEConv集成进YOLOv11,替换部分模块。

魔改工程师的博客 862

自定义View基础:Android中的颜色和颜色混合

一.简单介绍Android中的颜色 安卓支持的颜色模式: PS:其中字母表示通道类型,数值表示该类型用多少位二进制来描述。如ARGB8888则表示有四个通道(ARGB),每个对应的通道均用8位来描述。 注意:我们常用的是ARGB8888和ARGB4444,而在所有的安卓设备屏幕上默认的模式都是RGB565,请留意这一点。 以ARGB8888为例介绍颜色定义: A 从ox0

cdy的博客 公众号:Android开发吹牛皮 6090

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android自定义view设置背景颜色,Android View的几种背景颜色设置

Android里面的一些View是需要设置颜色的,比如textView的字体颜色和背景颜色,大家都知道基本的设置颜色方法,setTextColor(Color.RED),setBackground(Color.RED),setBackgroundColor(Color.RED)等等。但是往往这些都达不到现实项目中的要求。现在就举例说明几个我遇到的例子:1、一个TextView,我们需要把它的背景颜...

weixin_39524247的博客 4087

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

安卓自定义View 颜色篇

简单介绍颜色安卓支持的颜色模式:| 颜色模式 | 备注 || — | --: || ARGB8888 | 四通道高精度(32位) || ARGB4444 | 四通道低精度(16位) || RGB565 | 屏幕默认模式(16位 || Alpha8 | 仅有透明通道(8位) |以ARGB8888为例介绍颜色定义:| 类型 | 解释 | 0(0x00) | 255(0xff) || — | :-: | :-: | --: || A(Alpha) | 透明度 | 透明 | 不透明 || R(Red) | 红色 |

2401_84121646的博客 894

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

微信小程序实现点击改变view背景颜色

点击改变view背景颜色 线上效果图,如下: 效果就是点击任一一个,它的背景颜色和字体颜色都会改变 1.布局 我是用循环写的,因为这样比较方便吧,不然还需要设置好几个点击事件,代码如下: <view class="tapgo"> <view style=" background-color: {{item.color}};color: {{item.tcol}};" clas...

liuhaoxin666的博客 1万+

Android简单自定义View——获取图片颜色的ImageView

自定义View从ImageView图片中取色,可用于蓝牙灯颜色的变化。

xhuww的博客 4559

Android自定义view颜色

我整理的一些关于【CI】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/xltfovAndroid自定义View颜色详解 在Android开发中,自定义View是实现个性化UI设计的重要手段。通过自定义View,开发者能够控制绘制、交互和样式等各个方面。在此过程中,颜色的运用...

weixin_36016076的博客 139

Canvas绘制自定义view的颜色PorterDuffXfermode的选择

自定义view样色色差问题 自定义view在动态设置颜色的时候可能UI显示的效果和自己设置的值不一样,这个就是你的view中颜色层叠方式不太对, 使用 Paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));给画笔这个Xfermode,各种效果如下图所示 完整自定义view 仿照电池充电时电量的自定义view ...

The blog of 优快云 in 杨天福 6169

Android自定义view获取attr中自定义颜色的问题

好久不见,最近有点忙,好久没有发文章了,前天有个小学弟在写项目的过程中遇到了这个问题,由此写一篇文章。 项目场景: Android自定义View在布局中设置颜色 问题描述: 以下为学弟的代码 //attrs文件 <attr name="leftcolor" format="color"/> <attr name="rightcolor" format="color"/> //Java文件代码,获取颜色 int leftcolor=a

计蒙不吃鱼的博客 4643

android 自定义view 画板改变画笔颜色

在自定义view画板的时候,想实现多种颜色的绘制 我的想法是:改变画笔颜色不就可以实现吗。 于是通过 paint.setColor(color); 来设置画笔颜色,一顿操作之后发现, 在绘制之后,改变画笔颜色,再次绘制的时候,之前的颜色也改变了,这是咋回事呢? 我是在ondraw()中 canvas.drawPath(path, paint)绘制的啊...

无敌小鲁班的博客 3317

iOS项目开发实战——制作View的颜色渐变动画

一个View视图的颜色改变是一个最基本,也最容易引起用户注意的特性。现在我们来学习一下如何改变一个视图的颜色,并以动画的形式展现出来。 (1)在Main.storyboard中拖入一个Label和一个View,事先设置好这两个控件的颜色,然后绑定到代码中。 (2)实现代码如下: import UIKit class ColorViewController: UIViewController

乞力马扎罗的雪CYF的博客 5761

Android自定义View学习一---基础

Android自定义View学习一 自定义view三点: 布局 绘制 触摸反馈 基础 坐标系 参考: 安卓自定义View基础-坐标系 View的坐标系 注意:View的坐标系统是相对于父控件而言的. getTop(); //获取子View左上角距父View顶部的距离 getLeft(); //获取子View左上角距父View左侧的距离 getBottom(); ...

了凡 1145

Android自定义View学习三---图形绘制

Android自定义View学习三 内容来自:安卓自定义View进阶-Canvas之绘制图形 Paint Paint相当于是画笔,某些方面与iOS绘制还是很相似的 设置画笔样式,有三种模式 STROKE //描边 FILL //填充 FILL_AND_STROKE //描边加填充 Canvas之绘制图形 Canvas的常...

了凡 705

自定义View--颜色选择器

这是一个基本的颜色选择器,可以选取9种颜色,选中后回调监听的方法,把选中的颜色的RGB值返回 首先看一下效果图 没显示 弹出之后的效果 点击后的效果   下面我来说一下代码的实现 首先绘制一个显示颜色选项的View,我定义的是  ColorListView import android.content.Context; import and

a1a1a1a1s的专栏 640
上一篇: View学习(二)--角度与弧度
下一篇: android 6.0 动态权限
missingcall
博客等级 码龄10年 8粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值