ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】
2022-11-24 22:27:40
michael007js
79
前言
主要用于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; }
完整工具类如下
import android.graphics.Color; /** * Created by Michael * 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; } }