讲到使用资源文件,必然有两种方式,一种是在xml中引用,一种是在代码里引用。
例如:我们在xml中定义了如下两种颜色,在xml文件中引用的话,很简单的,使用@color/drakblue即可。
<resources> <color name="weakyellow">#ee9c16</color> <color name="darkblue">#445f74</color> </resources>
但是如果在代码中引用呢?
我是相当长一段时间没有在代码中引用过资源文件了,今天偶尔引用一下,竟然试了好一段时间,才把颜色调正常。
最开始我是这样定义的:
colors = new Integer[]{Color.CYAN,Color.DKGRAY,Color.BLUE,Color.GREEN,Color.LTGRAY,Color.MAGENTA,Color.BLACK,Color.RED,Color.YELLOW,Color.WHITE,R.color.weakyellow,R.color.darkblue};
其中前面用的是系统自带的color,因为系统本身就提供了10种颜色,到第11种和12种时候,只能自己定义了,于是出现了前边我定义的那两种颜色,写数组的时候,顺其自然的模仿前面的形式来了个:
R.clor.darkblue
看上去形式还蛮搭,测试的时候发现无论怎样,后两个颜色显示的都是一种纯色,完全跟我定义的无关。
怎么能这样定义呢?完全是忘了基本概念,“R.clor.darkblue”是什么意思?同学们?
它代表的是资源值,每个resources里边的内容都会在R文件中生成一个唯一的ID值,这跟颜色毫无关系!
再举个例子,使用
textView.setText(R.string.me)
这样对么?里边是int值,哪里是你要的string哟!
好了,正确的方法应该是耳熟能详的这样子滴。。。拜拜~
colors = new Integer[]{Color.CYAN,Color.DKGRAY,Color.BLUE,Color.GREEN,Color.LTGRAY,Color.MAGENTA,Color.BLACK,Color.RED,Color.YELLOW,Color.WHITE,getResources().getColor(R.color.weakyellow),getResources().getColor(R.color.darkblue)};
getResources().getColor(R.color.darkblue)