Android自定义View - Color

176 阅读1分钟

色彩在计算机中主要有ARGB通道和RGB通道两种,红绿蓝也被称为色光的三原色,和颜料的三原色不同,颜料的三原色是红黄蓝。将这三原色按不同比例混合,就可以调出除黑色外的所有的颜色,因为黑色就代表没有光。颜料的三原色正好相反,可以调出除白色以外的任意颜色。

按比例调色

    Color.argb() //a为alpha透明度
    Color.rgb() //r为red红色,g为green绿色,b为blue绿色

每个参数取值均为0~255

解析字符串色值

    Color.parseColor("#FFFFFF") //标准6位,1~2位代表红,3~4位代表绿,5~6位代表蓝
    Color.parseColor("#FF000000")//带透明度8位,1~2位代表透明度,3~4位代表红,5~6位代表绿,7~8位代表蓝
    Color.parseColor("#000")//简要3位,第1位代表第1位和第2位一样,为红色通道,依次类推

直接定义颜色值

val color = 0xFF000000

高2位的FF代表完全不透明,如果是00则代表完全透明,这个数值越大代表越不透明。

使用Color类中定义的颜色

@ColorInt public static final int BLACK       = 0xFF000000;
@ColorInt public static final int DKGRAY      = 0xFF444444;
@ColorInt public static final int GRAY        = 0xFF888888;
@ColorInt public static final int LTGRAY      = 0xFFCCCCCC;
@ColorInt public static final int WHITE       = 0xFFFFFFFF;
@ColorInt public static final int RED         = 0xFFFF0000;
@ColorInt public static final int GREEN       = 0xFF00FF00;
@ColorInt public static final int BLUE        = 0xFF0000FF;
@ColorInt public static final int YELLOW      = 0xFFFFFF00;
@ColorInt public static final int CYAN        = 0xFF00FFFF;
@ColorInt public static final int MAGENTA     = 0xFFFF00FF;
@ColorInt public static final int TRANSPARENT = 0;

比如Color.BLACK, Color.TRANSPARENT。

读取colors.xml资源文件中的颜色

R.color.colorPrimary