ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处!
前言
主要用于color整型、rgb数组、16进制互相转换(-12590395 <--> #3FE2C5 <--> [63,226,197])
效果图
暂不需要
代码分析
color的int类型值转16进制类型值包括两种方案:
方案一:思路:计算&16777215的值,然后通过字符串获取16进制数值。
/**Color的Int整型转Color的16进制颜色值【方案一】
* colorInt - -12590395
* return Color的16进制颜色值——#3FE2C5
* */
public static String int2Hex(int colorInt){
String hexCode = "";
hexCode = String.format("#%06X", Integer.valueOf(16777215 & colorInt));
return hexCode;
}
方案二:思路:int类型 --> rgb数组 --> 16进制类型值
/**Color的Int整型转Color的16进制颜色值【方案二】
* colorInt - -12590395
* return Color的16进制颜色值——#3FE2C5
* */
public static String int2Hex2(int colorInt){
String hexCode = "";
int[] rgb = int2Rgb(colorInt);
hexCode = rgb2Hex(rgb);
return hexCode;
}
使用步骤
一、项目组织结构图

注意事项:
1、导入类文件后需要change包名以及重新import R文件路径
2、Values目录下的文件(strings.xml、dimens.xml、colors.xml等),如果项目中存在,则复制里面的内容,不要整个覆盖
二、导入步骤
将ColorUtil文件复制到项目中即可。
package com.why.project.colorutildemo.util; import android.graphics.Color; /**
* Created by HaiyuKing
* Used Color工具类(color整型、rgb数组、16进制互相转换)
*/ public class ColorUtil { /**Color的Int整型转Color的16进制颜色值【方案一】
* colorInt - -12590395
* return Color的16进制颜色值——#3FE2C5
* */
public static String int2Hex(int colorInt){
String hexCode = "";
hexCode = String.format("#%06X", Integer.valueOf(16777215 & colorInt));
return hexCode;
} /**Color的Int整型转Color的16进制颜色值【方案二】
* colorInt - -12590395
* return Color的16进制颜色值——#3FE2C5
* */
public static String int2Hex2(int colorInt){
String hexCode = "";
int[] rgb = int2Rgb(colorInt);
hexCode = rgb2Hex(rgb);
return hexCode;
} /**Color的Int整型转Color的rgb数组
* colorInt - -12590395
* return Color的rgb数组 —— [63,226,197]
* */
public static int[] int2Rgb(int colorInt){
int[] rgb = new int[]{0,0,0}; int red = Color.red(colorInt);
int green = Color.green(colorInt);
int blue = Color.blue(colorInt);
rgb[0] = red;
rgb[1] = green;
rgb[2] = blue; return rgb;
} /**rgb数组转Color的16进制颜色值
* rgb - rgb数组——[63,226,197]
* return Color的16进制颜色值——#3FE2C5
* */
public static String rgb2Hex(int[] rgb){
String hexCode="#";
for(int i=0;i<rgb.length;i++){
int rgbItem = rgb[i];
if(rgbItem < 0){
rgbItem = 0;
}else if(rgbItem > 255){
rgbItem = 255;
}
String[] code = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
int lCode = rgbItem / 16;//先获取商,例如,255 / 16 == 15
int rCode = rgbItem % 16;//再获取余数,例如,255 % 16 == 15
hexCode += code[lCode] + code[rCode];//FF
}
return hexCode;
}
/**Color的16进制颜色值 转 Color的Int整型
* colorHex - Color的16进制颜色值——#3FE2C5
* return colorInt - -12590395
* */
public static int hex2Int(String colorHex){
int colorInt = 0;
colorInt = Color.parseColor(colorHex);
return colorInt;
} /**Color的16进制颜色值 转 rgb数组
* colorHex - Color的16进制颜色值——#3FE2C5
* return Color的rgb数组 —— [63,226,197]
* */
public static int[] hex2Rgb(String colorHex){
int colorInt = hex2Int(colorHex);
return int2Rgb(colorInt);
} /**Color的rgb数组转Color的Int整型
* rgb - Color的rgb数组 —— [63,226,197]
* return colorInt - -12590395
* */
public static int rgb2Int(int[] rgb){
int colorInt = 0;
colorInt = Color.rgb(rgb[0],rgb[1],rgb[2]);
return colorInt;
} }
三、使用方法
package com.why.project.colorutildemo; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log; import com.why.project.colorutildemo.util.ColorUtil; public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initData();
}
private void initData() { String colorHex1 = ColorUtil.int2Hex(-12590395);//#3FE2C5
String colorHex2 = ColorUtil.int2Hex2(-12590395);//#3FE2C5
Log.w(TAG,"colorHex1="+colorHex1);
Log.w(TAG,"colorHex2="+colorHex2); int[] colorRgb = ColorUtil.int2Rgb(-12590395);//63,226,197
Log.w(TAG,"colorRgb="+colorRgb[0]+","+colorRgb[1]+","+colorRgb[2]); int colorInt1 = ColorUtil.hex2Int("#3FE2C5");//-12590395
Log.w(TAG,"colorInt1="+colorInt1);
}
}
打印日志如下:

混淆配置
无
参考资料
暂时空缺
项目demo下载地址
https://github.com/haiyuKing/ColorUtilDemo
ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】的更多相关文章
- 颜色选择器 rgb 与16进制 颜色转换
1. h5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- RGB与16进制颜色转换的原理
Integer有进制转换的方法.也可以自己写进制转换的方法.
- RGB与16进制色互转
点击进入新版 <前端在线工具站> CSS, JavaScript 压缩YUI compressor, JSPacker...HTML特殊符号对照表PNG,GIF,JPG... Base ...
- JS-011-颜色进制转换(RGB转16进制;16进制转RGB)
在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制:16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#0000 ...
- JS实现rgb与16进制颜色相互转换
1.rgb转16进制 function to16 (a) {//RGB(204,204,024) //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a- ...
- bgcolor RGB 和16进制之间的转换,16进制转RGB,源码
<p>bgcolor RGB 和16进制之间的转换,16进制转RGB,源码例如:<br /> 输入 201,255,201 转换成 #C9FFC9</p> < ...
- C# RGB与16进制颜色转换方法
http://www.cnblogs.com/goldarch/archive/2010/08/16/1801053.html #region [颜色:16进制转成RGB] /// &l ...
- java-整型数值 用 16进制转换、2进制转换-Integer.toHexString
负数为什么要用补码表示 可以将符号位和其它位统一处理 减法也可按加法来处理 另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃 正数:原码.反码.补码相同. 负数:反码符号位不变 ...
- 16进制色值转换成RGB
#51147f 转换成RGB ,5*16+1 ,1*16+4,7*16+15 #A9A9A9 转换成RGB ,A*16+9 ,A*16+9,A*16+9
随机推荐
- 前端BUG监控神器
有时候,看到用户的反馈,我们往往会一脸茫然,因为反馈的信息太少了. 比如有用户反馈登录不了.为了解这个问题,一般的流程是这样的:首先试试自己能不能登录网站,发现没问题:然后查看后台日志,发现最近没有登 ...
- BZOJ_3207_花神的嘲讽计划Ⅰ_哈希+主席树
BZOJ_3207_花神的嘲讽计划Ⅰ_哈希+主席树 Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程 ...
- BZOJ_1801_[Ahoi2009]chess 中国象棋_DP
BZOJ_1801_[Ahoi2009]chess 中国象棋_DP Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像 ...
- BZOJ_4517_[Sdoi2016]排列计数_组合数学
BZOJ_4517_[Sdoi2016]排列计数_组合数学 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[ ...
- 后端传Long类型至前端js会出现精度丢失问题
今天开发遇到个问题,Java后端的Long类型数据,传到前端会出现精度丢失,如:164379764419858435,前端会变成164379764419858430.在浏览器中做测试可知,这就是一个精 ...
- Java线程同步锁
把synchronized当作函数修饰符时,示例代码如下: Public synchronized void method(){ //-. } 这也就是同步方法,那这时synchronized锁定的是 ...
- Healwire Online Pharmacy 3.0 Cross Site Request Forgery / Cross Site Scripting
Healwire Online Pharmacy version 3.0 suffers from cross site request forgery and cross site scriptin ...
- python 将os.getcwd()获取路径中的\替换成\\
通过os.getcwd()获取的路径为:D:\Auto\test\mobule,实际需要修改为:D://Auto//test//mobule 代码实现如下: import osb = os.getcw ...
- java日志文件用法总结
1.基本概念 日志门面(接口):commons logging ; slf4j ; 日志具体实现:log4j ; logback(Spring 系列在使用) ; log4j2(添加了异步logger的 ...
- UWP中实现大爆炸效果(二)
上一回实现了一个宽度不均匀的Panel,这次我们编写一个简单的BigbangView主体. 首先创建一个模板化控件,删掉Themes/Generic.xaml中的<Style TargetTyp ...