当前位置: 移动技术网 > 移动技术>移动开发>Android > Android_Develop:使用RGB值在代码中实时设置图片背景颜色

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

2018年02月27日  | 移动技术网移动技术  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网