ColorUtil【Color工具類(color整型、rgb數組、16進制互相轉換)】

版權聲明:本文爲HaiyuKing原創文章,轉載請註明出處!android

前言

主要用於color整型、rgb數組、16進制互相轉換(-12590395 <--> #3FE2C5 <--> [63,226,197]git

效果圖

暫不須要github

代碼分析

color的int類型值轉16進制類型值包括兩種方案:數組

方案一:思路:計算&16777215的值,而後經過字符串獲取16進制數值。app

    /**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進制類型值ide

    /**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文件路徑spa

二、Values目錄下的文件(strings.xml、dimens.xml、colors.xml等),若是項目中存在,則複製裏面的內容,不要整個覆蓋日誌

2、導入步驟

 將ColorUtil文件複製到項目中便可。code

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;
    }

}

3、使用方法

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

相關文章
相關標籤/搜索