講到使用資源文件,必然有兩種方式,一種是在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)