版权声明:本文为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进制互相转换)】的更多相关文章

  1. 颜色选择器 rgb 与16进制 颜色转换

    1. h5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. RGB与16进制颜色转换的原理

    Integer有进制转换的方法.也可以自己写进制转换的方法.

  3. RGB与16进制色互转

      点击进入新版 <前端在线工具站> CSS, JavaScript 压缩YUI compressor, JSPacker...HTML特殊符号对照表PNG,GIF,JPG... Base ...

  4. JS-011-颜色进制转换(RGB转16进制;16进制转RGB)

    在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制:16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#0000 ...

  5. JS实现rgb与16进制颜色相互转换

    1.rgb转16进制 function to16 (a) {//RGB(204,204,024) //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a- ...

  6. bgcolor RGB 和16进制之间的转换,16进制转RGB,源码

    <p>bgcolor RGB 和16进制之间的转换,16进制转RGB,源码例如:<br /> 输入 201,255,201 转换成 #C9FFC9</p> < ...

  7. C# RGB与16进制颜色转换方法

    http://www.cnblogs.com/goldarch/archive/2010/08/16/1801053.html #region [颜色:16进制转成RGB]        /// &l ...

  8. java-整型数值 用 16进制转换、2进制转换-Integer.toHexString

    负数为什么要用补码表示 可以将符号位和其它位统一处理 减法也可按加法来处理 另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃 正数:原码.反码.补码相同. 负数:反码符号位不变 ...

  9. 16进制色值转换成RGB

    #51147f  转换成RGB ,5*16+1 ,1*16+4,7*16+15 #A9A9A9 转换成RGB ,A*16+9 ,A*16+9,A*16+9

随机推荐

  1. I/O-----字符输出流

    package io.day04; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileR ...

  2. Java多线程简介

    Java多线程简介 Java中内置了对多线程的支持,让多线程的开发方便很多,但同时也带来了另外的复杂,线程间的交互以及很多的不确定性让多线程又显得很复杂.在此只是针对Java中多线程的基础做些说明,有 ...

  3. SQL Server 中如何做到连续时间段的拆分?

    今天在工作中遇到了一个很实际的问题,客户在OA接口的员工休假中间表中提供了连续时间段的休假记录,例如: 张三,2018-12-1 ~2018-12-31 ,病假,31天.这样带来的问题是,如果我需要统 ...

  4. 快照(Snapshot)技术发展综述

    快照(Snapshot)技术发展综述 刘爱贵 摘要:传统数据备份技术存在备份窗口.恢复时间目标RTO和恢复时间点RPO过长的问题,无法满足企业关键性业务的数据保护需求,因此产生了数据快照技术.本文对快 ...

  5. Selenium在定位的class含有空格的复合类的解决办法整理

    1.class属性唯一但是有空格,选择空格两边唯一的哪一个 <div id="tempConfigTable" class="dtb-style-1 table-d ...

  6. log4j java项目中的配置

    第一步你需要 相关的jar包 第二歩你需要一个关于log4j的配置文件 第三歩 你需要一个检测用的java 文件 导入这两个jar包进你的项目中 commons-logging.jar log4j-1 ...

  7. java游戏开发杂谈 - 游戏物体

    现实生活中,有很多物体,每个物体的长相.行为都不同. 物体存在于不同的空间内,它只在这个空间内发生作用. 物体没用了,空间就把它剔除,不然既占地方,又需要花精力管理. 需要它的时候,就把它造出来,不需 ...

  8. Emmagee--APP性能测试工具的基本使用

    一.Emmagee介绍 Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具.该工具的优势在于如同windows系统性能监视器类似,它提供的是数据采集的功能,而 ...

  9. CTF丨2019互联网安全城市巡回赛·西安站,我们来了!

    万物互联时代,网信事业发展突飞猛进,互联网悄然渗透到国民生活的每一个角落,伴随而来的网络安全威胁和风险也日渐突出.网络诈骗.钓鱼软件.勒索病毒等安全问题层出不穷,信息泄露等网络安全事件也频繁上演,给用 ...

  10. 网络协议 终章 - GTP 协议:复杂的移动网络

        前面都是讲电脑上网的情景,今天我们就来认识下使用最多的移动网络上网场景. 移动网络的发展历程     你一定知道手机上网有 2G.3G.4G 的说法,究竟这都是什么意思呢?有一个通俗的说法就是 ...