[学习] android 前景色和颜色含义
1. 前景色
一直我都不明白前景色,今天来学习。说到前景色一定要会说到背景颜色,背景颜色很常见。
尝试说说背景颜色,一般在画画中,找到一张白色的纸,然后我们在上面画画,这张白色的纸,就是背景颜色,我们画到上面的会覆盖背景颜色,比如我们要在这张白色纸上画一片天空,天空是蓝色,等画完我们就会发现原来白色的纸都变蓝了;总的来说背景颜色就是指本来的颜色,我们如果要在上面修饰,修饰物就会遮挡背景颜色。
背景颜色示例
其实很容易发现,其实背景颜色并不是绝对的,也就是一张图中可以有很多背景颜色,并不是只能有一个。
而前景颜色相当于一张遮布,无论里面有啥都会变成前景颜色;如果前景颜色完成透明,就相当于没有了前景颜色;前景颜色也只是相对的,人的肉眼一般只能看到一层“前景颜色”,如果全部“全景颜色”都是透明的,那么人眼一层也看不到;在 react-native
中 opacity
就是前景颜色,是一个白色的前景颜色,所以当我们设置为 0
的时候就会看到全是白色,当设置 1
的时候就会完全透明。
2. xml
中的颜色值含义
对比学习,通过 react-native
来学习 android
,这样可以帮助消化新知识,但同样会带有新的问题,那就是容易忽略细节,或者说是本来面目。比如说如果你发现有两样表象相同,就很容易出现这两个就是一个东西的概念,比如上面我说的 opacity
,其实我并没有看底层实现,只是根据现象做出的结论。
我记得读书那会儿,当我第一次遇到需要证明结合律,证明: (a + b) + c = a + (b + c)
,我觉得很惊讶,因为我觉得本来就是这样,还需要证明嘛。其实不然,任何新东西都应该证明,不能用已有的结论直接放到新的理论下。
学习二进制的时候,我们都是以十进制为主,只要是跟数字打交道都会经过十进制。学习英语的时候总是翻译成汉语在翻译成英语;之所以出现这样的原因,是因为环境都是这样的,出的题也都是这样的。与其说我们跳不出这个怪圈,不如说大家都跳不出。
现在回主题:
- 先使用对比的方式学习:在
react-native
中颜色值我一般使用rgb
、rrggbb
或rgba
这三种方式,也就是:
// #ff0000 红色
// #0f0 绿色
// rgba(0, 0, 255, 1) 蓝色
而在 android
开发中,则是下面:
// #ff0000 红色
// #0f0 绿色
// #ff0000ff 蓝色
其中第一个的颜色对应为: rrggbb
,第二个颜色对应为: rgb
,第三个颜色对应为: aarrggbb
。由于之前都是使用 rrggbb
的形式,所以我就以为跟 react-native
一样,而且这个还不是一模一样的,我都理解 #ff0000ff
为 rrggbbaa
的形式,但实际情况并不是这样,而是 aarrggbb
。
- 使用
android
的方式
其实由于我先学习react-native
,所以对于我来说是困难的;但我想到了一种方式,那就是使用从颜色含义下手,也就是我开始学习react-native
时怎样学习的颜色值;比如我会去了解react-native
各个颜色符号代表的含义,比如#ff0000
,颜色分别为红绿蓝组成,每一个颜色值使用十六进制表示,范围为:00-ff
。
其实即便这样也会发现,我也在站在 react-native
的基础上进行的;所以在前期这种方式一般是避免不了的,我把这种学习方法叫参考学习法。这种方式其实在刚接触的时候可以降低学习成本,如果跨度太大,那么可能一起步就会发现不一样,这个时候容易产生抵触,当遇到这种情况应该赶快跳出原来的思维方式,从新面对。