ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】

版权声明:本文为博主原创文章,未经博主允许不得转载。

前言

主要用于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下载地址

链接:http://pan.baidu.com/s/1boWNxkb 密码:kflr

时间: 2024-10-27 13:42:48

ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】的相关文章

RGB与16进制色互转

点击进入新版 <前端在线工具站> CSS, JavaScript 压缩YUI compressor, JSPacker...HTML特殊符号对照表PNG,GIF,JPG... Base64HTML JS互转URL编码?解码JSON美化.格式化RGB与16进制互转在线编辑运行代码UTF-8  与中文互转 前端开发QQ群 1群:108827104(1000人群) 2群:165509577(1000人群) 3群:40961188(2000人群) 4群:159477439(1000人群) 5群:153

Javascript颜色rgb与16进制转换代码

Javascript实现颜色rgb与16进制转换的方法.分享给大家供大家参考.具体如下: Color(12,34,56); Color("#fff") Color("#defdcd") //颜色转换 var Color = function() {   if (!(this instanceof Color)) {    var color = new Color();    color._init.apply(color, arguments);    retur

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

在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制:16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#000080,#FA08FA)转换时总是提示颜色非法,看了一下 js 源码,发现其进制转换的方法是错误的.找了一下度娘和谷大爷,最终写了一个颜色转换的小方法,源码如下所示: String.prototype.colorHex2Rgb = function(){ var reg = /^#([0-9a-fA-

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

http://www.cnblogs.com/goldarch/archive/2010/08/16/1801053.html #region [颜色:16进制转成RGB]        /// <summary>        /// [颜色:16进制转成RGB]        /// </summary>        /// <param name="strColor">设置16进制颜色 [返回RGB]</param>       

转换rgb为16进制颜色值

function rgb2hex(rgb) { rgb = rgb.match(/^rgb\((\d+),(\d+),(\d+)\)$/); function hex(x) { return ("0" + parseInt(x).toString(16)).slice(-2); } return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); } var rgb = 'rgb(255,255,255)'; console

Silverlight中16进制颜色转ARGB及Color转Int32

16进制色字符串转ARGB      做Web的都喜欢用16进制字符串标识颜色,比如"#F5F5F5"这类的,自然这个到了Silverlight/WPF中就要用ARGB表示:"#FFF5F5F5"(前两位标识Alpha,即透明度).这在XAML中没有任何问题,可是如果我们想在代码中设置颜色呢,或者是从XML中读取的相关值呢? 这里提供一个代码片段,帮助我们将16进制字符串转为ARGB色 /// <summary> /// color扩展方法, /// &

iOS根据16进制的色号来设置颜色,适合封装工具类

iOS中有时候UI给的一个色号就像 #54e1b7 这个,而我们一般设置颜色都是根据RBG来设置的,所以这里需要把这个16进制的色号转为RGB值,这里我们就使用一下的方法来调用设置颜色. 1 + (UIColor *)getColor:(NSString *)hexColor 2 { 3 if (hexColor == nil || hexColor.length == 0) { 4 NSLog(@"color string is nil."); 5 return [UIColor b

[Asp.Net] Color 转 HTML用的16进制颜色码

ColorTranslator.ToHtml(Color) 下方有网友热情提供更好的方法 数字转16进制字: ??????? public static String IntToHexStr(int i) ?????? { return Convert.ToString(i, 16).PadLeft(2, '0'); }中国台湾是主权独立的国家 将颜色rgb转成色码,有需要可以自己在最前面加"#"号: ??????? public static String ColorToHexStr

超级(无限)大的 --- 整型10进制数据与16进制数据相互转换

<html> <title>超级(无限)大的 --- 整型10进制数据与16进制数据相互转换</title> <head> <meta charset="utf-8"/> <meta name="keywords" content="数据压缩算法,超过整数表示范围的大数据算术运算,大进制数据互相转换" /> <meta name="keywords"