zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    EasyDarwin开源流媒体服务器实现RTSP直播同步输出MP4、RTMP、HLS的方案思路
    OBS桌面视频直播软件/推流工具使用指南
    C++界面库
    . net 源代码调试
    WPF学习之X名称空间详解
    NSIS安装程序制作工具判断系统是否安装.NET
    Qt学习笔记常用容器
    快捷键
    Python中if __name__ == '__main__':作用
    python中__init__.py文件的作用
  • 原文地址:https://www.cnblogs.com/whycxb/p/6851668.html
Copyright © 2011-2022 走看看