Android 开发笔记 — 颜色的使用

颜色的编码

Android 中颜色值的定义是由透明度 alpha 和 RGB(红绿蓝)三原色来定义的,有八位十六进制数与六位十六进制数两种编码。 八位例如 FF00FF00,前两位 FF 表示透明度,后面两位 00 表示红色的浓度,再后面两位 FF 表示绿色的浓度,最后两位 00 表示蓝色的浓度。其中透明度为 FF 时为完全不透明,00 则表示完全透明。 六位例如 00FF00 。不过它分两种情况,在 XML 文件中,默认透明度为 FF,即 #00FF00 = #FF00FF00 ,在 Java 代码中,默认透明度为 00,即 0x00FF00 = 0x0000FF00 = 0x00000000 = 全透明。 其中里面的 FF 在 XML 文件和 Java 文件中都不分大小写,即写 00ff00ff00FF00FF00Ff00fF 都是可以用的,表示的都是绿色

颜色的使用

values/colors.xml:

1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources >
<color name="myColor">#FF00FF</color>
</resources >

定义了一个名为 myColor 的颜色,在别的地方就可以通过引用 myColor 来获取该颜色值,如 TextView 定义中:

1
2
3
4
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/myColor" />

Java 代码中可以使用 ResourceManager 类中的 getColor 来获取该颜色:

1
int color = getResources().getColor(R.color.myColor);

也可以直接声明:

1
int color = 0x00ff00ff;

也可以使用下面这些 Color 类中的常量:

1
2
3
4
5
6
7
8
9
10
11
12
public static final int BLACK = -16777216;		// 黑色
public static final int BLUE = -16776961; // 蓝色
public static final int CYAN = -16711681; // 青色
public static final int DKGRAY = -12303292; // 深灰色
public static final int GRAY = -7829368; // 灰色
public static final int GREEN = -16711936; // 绿色
public static final int LTGRAY = -3355444; // 浅灰色
public static final int MAGENTA = -65281; // 玫瑰红
public static final int RED = -65536; // 红色
public static final int TRANSPARENT = 0; // 透明
public static final int WHITE = -1; // 白色
public static final int YELLOW = -256; // 黄色

或者调用 Color 类中 rgbargb 方法,但是上面说了在 Java 代码中六位编码即调用 rgb 方法透明度默认为 00, 所以说无论你调什么颜色都和透明一样,所以说如果要用就用 argb

1
int white = Color.argb(255, 255, 255, 255);

其中参数取值范围为 0~255 的整数,和上面的 00~FF类似。

下面是在 Java 代码中使用的示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import android.graphics.Color;

...

// 引用 values/colors.xml 里的值
int color = getResources().getColor(R.color.myColor);
// 直接声明十六进制的颜色代码
int white = 0xffffffff;
// 引用 Color 类中的常量,注意要使用 Color 类需要导入上面的 android.graphics.Color 包
int black = Color.BLACK;
// 调用 Color.argb(int alpha, int red, int green, int blue)
int blue = Color.argb(255, 0, 0, 255);

// 设置 textView 的文本颜色为白色
textView.setTextColor(white);
// 设置 textView 的背景颜色为黑色
textView.setBackgroundColor(black);

颜色代码那么多,全部都背过肯定不现实,可以用 PS 之类的软件去找颜色或提取颜色,下面推荐一些网站方面大家查色(当然背一些常用的肯定也不会有坏处)。