標籤:
講到使用資源檔,必然有兩種方式,一種是在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)
android如何使用資源檔定義的顏色