Java / Android String to Color转换

我正在创建一个应用程序,我希望能够通过用户输入(edittext)和hex值设置各种颜色,例如#eeeeee等。 问题是我似乎无法弄清楚如何转换它们。

如果我在这样的代码中做某事它可以正常工作:titlebar.setBackgroundColor(0xFF545455);

但是,如果我通过edittext检索一个值,说“545455”,我无法让它工作

String tbColor = tb_color.getText().toString(); String value = "0xFF" + tbColor; int setColor = Integer.valueOf(value); titlebar.setBackgroundColor(setColor); 

任何人对如何实现这一点有任何想法?

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#parseInt(java.lang.String,int

例如:

 titlebar.setBackgroundColor(Integer.parseInt("545455", 16)+0xFF000000); 

那么titlebar.setBackgroundColor(Color.parseColor("#545455"));

 StringBuffer hexString = new StringBuffer(); hexString.append(Integer.toHexString(0xFF); System.out.print(hexString.toString()); 

这是我从任何字符串中获取颜色的函数。 例如:“Hello World!” 会给你一些绿色的R G B:84 181 132

 public static int getColorFromString(String string) { int[] RGB = {0,0,0}; int l = string.length(); String sub_string_0 = string.substring(0, (int) Math.ceil((double) l / 3)); // responsable for Red int l_0 = sub_string_0.length(); String sub_string_1 = string.substring(l_0, l_0 + (int) Math.ceil((double) (l - l_0)/2)); // responsable for Green String sub_string_2 = string.substring(l_0 + sub_string_1.length(), string.length()); // responsable for Blue String[] sub_string = new String[]{ sub_string_0, sub_string_1, sub_string_2 }; for(int i = 0; i < sub_string.length; i++) { if(sub_string[i].length()==0) sub_string[i] = " "; // we asign a value (a space) Log.d("sub_string", i + " " + sub_string[i]); for (char c : sub_string[i].toCharArray()) { int c_val = Character.getNumericValue(c) - Character.getNumericValue('a'); // for 'a' -> 0 for 'z' -> 25 if(c_val < 0) // spaces, numbers ... c_val= new Random().nextInt(25); //add some salt - a random number Log.d("value ", c + " -> " + c_val); RGB[i] = RGB[i] + c_val; } } int letters_number = Character.getNumericValue('z') - Character.getNumericValue('a'); // z - a 35 - 10 // normalizing int R = 255 * RGB[0]/sub_string[0].length()/letters_number; int G = 255 * RGB[1]/sub_string[1].length()/letters_number; int B = 255 * RGB[2]/sub_string[2].length()/letters_number; Log.d("RGB", R +" " + G + " " + B); return Color.rgb(R, G, B); } 

注意:如果您的字符串包含特殊字符,空格或数字,则每次都不会返回相同的数字(颜色)。 那里有一些盐 – 我为这些角色分配了随机数,只是为了好玩……