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
随机推荐
- I/O-----字符输出流
package io.day04; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileR ...
- Java多线程简介
Java多线程简介 Java中内置了对多线程的支持,让多线程的开发方便很多,但同时也带来了另外的复杂,线程间的交互以及很多的不确定性让多线程又显得很复杂.在此只是针对Java中多线程的基础做些说明,有 ...
- SQL Server 中如何做到连续时间段的拆分?
今天在工作中遇到了一个很实际的问题,客户在OA接口的员工休假中间表中提供了连续时间段的休假记录,例如: 张三,2018-12-1 ~2018-12-31 ,病假,31天.这样带来的问题是,如果我需要统 ...
- 快照(Snapshot)技术发展综述
快照(Snapshot)技术发展综述 刘爱贵 摘要:传统数据备份技术存在备份窗口.恢复时间目标RTO和恢复时间点RPO过长的问题,无法满足企业关键性业务的数据保护需求,因此产生了数据快照技术.本文对快 ...
- Selenium在定位的class含有空格的复合类的解决办法整理
1.class属性唯一但是有空格,选择空格两边唯一的哪一个 <div id="tempConfigTable" class="dtb-style-1 table-d ...
- log4j java项目中的配置
第一步你需要 相关的jar包 第二歩你需要一个关于log4j的配置文件 第三歩 你需要一个检测用的java 文件 导入这两个jar包进你的项目中 commons-logging.jar log4j-1 ...
- java游戏开发杂谈 - 游戏物体
现实生活中,有很多物体,每个物体的长相.行为都不同. 物体存在于不同的空间内,它只在这个空间内发生作用. 物体没用了,空间就把它剔除,不然既占地方,又需要花精力管理. 需要它的时候,就把它造出来,不需 ...
- Emmagee--APP性能测试工具的基本使用
一.Emmagee介绍 Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具.该工具的优势在于如同windows系统性能监视器类似,它提供的是数据采集的功能,而 ...
- CTF丨2019互联网安全城市巡回赛·西安站,我们来了!
万物互联时代,网信事业发展突飞猛进,互联网悄然渗透到国民生活的每一个角落,伴随而来的网络安全威胁和风险也日渐突出.网络诈骗.钓鱼软件.勒索病毒等安全问题层出不穷,信息泄露等网络安全事件也频繁上演,给用 ...
- 网络协议 终章 - GTP 协议:复杂的移动网络
前面都是讲电脑上网的情景,今天我们就来认识下使用最多的移动网络上网场景. 移动网络的发展历程 你一定知道手机上网有 2G.3G.4G 的说法,究竟这都是什么意思呢?有一个通俗的说法就是 ...