您的位置:首页 > 移动开发 > Android开发

[Android_Develop]使用RGB值在代码中实时设置图片背景颜色

2018-01-22 23:59 585 查看

使用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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐