版權聲明:本文爲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; }
注意事項:工具
一、導入類文件後須要change包名以及從新import R文件路徑spa
二、Values目錄下的文件(strings.xml、dimens.xml、colors.xml等),若是項目中存在,則複製裏面的內容,不要整個覆蓋日誌
將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; } }
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); } }
打印日誌以下:
無
暫時空缺