Android_Develop:使用RGB值在代码中实时设置图片背景颜色
程序员文章站
2022-05-01 18:15:31
【Android_Develop】使用RGB值在代码中实时设置图片背景颜色
ImageView.setImageResource(int color),参数是int型,而我们...
【Android_Develop】使用RGB值在代码中实时设置图片背景颜色
ImageView.setImageResource(int color),参数是int型,而我们的RGB是三个0-255的数值,所以我们的目标是将三个RGB转成一个int id。
首先我们要将RGB三色转成16进制,并拼成“#ffffff”的形式,即方法toHexColor(r,g,b);
但是拼凑过程中如果数值小于10,结果会出现“#0ffff”,即不是6个字符,会crash,所以要检查,即checkColorValue(int value)方法;
最后调用Color.parseColor(color)方法,即可生产int color ID。
/** * 设置自定义按键背景颜色,有则设置图片背景色,无则设为默认色彩 */ private void setSelfBg(int r,int g,int b,ImageView imageView){ if(r==NO_COLOR||g==NO_COLOR||b==NO_COLOR){ imageView.setImageResource(R.drawable.atmo_self); }else { String color = toHexColor(r,g,b); imageView.setImageResource(R.drawable.atmo_tran); imageView.setBackgroundColor(Color.parseColor(color)); } }
/** *将10进制RGB设为16进制“#000000”String */ private String toHexColor(int red, int green, int blue){ if(red>255) red = 255; if(green>255) green = 255; if(blue>255) blue = 255; if(red<0) red = 0; if(green<0) green = 0; if(blue<0) blue = 0; String r = checkColorValue(red); String g = checkColorValue(green); String b = checkColorValue(blue); String str = "#"+r+g+b; if(str.length()<7) str = "#000000"; return str; }
/** *检查转换后的16进制是否为两位数 */ private String checkColorValue(int value){ String str = ""; if(value<16){ str ="0" + Integer.toHexString(value); return str; } return Integer.toHexString(value); }