欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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