2013年1月時我發表了安卓文字時鐘系列文章的第一部分。在文章的結語部分提到該App有很多可以改進的地方,所以在即將開始的新系列中,我們會對App做出一些改進,讓它更絢麗一些。並且會使用到安卓最新版本中的新特性(本文發表時,安卓的最新版本號為4.4版本,版本代號Kitkat)。
首先,利用4.4版本新的線條顏色,將原本淺藍高亮的線條顏色改為中性白。當然,我們必須還要保證不同安卓版本下的相容性,這裡就藉助安卓的資源管理器在不同的安卓版本中應用對應的配色方案。
讓我們先從預設的資源配置檔案開始res/values/colors.xml
:
1 2 3 4 5 6 |
; html-script: false ] <?xml version="1.0" encoding="utf-8"?> <resources> <color name="holo_blue_bright">#ff00ddff</color> <color name="holo_blue_light">#ff33b5e5</color> </resources> |
我們將使用holo主題作為預設的配色方案,對於不支援holo主題的老版Android系統時,上面(指定顏色)資原始檔將發揮作用。
當裝置使用了4.4或更高版本的系統時,為了能讓原先的線條顏色變為中性白色,需要再定義一個(帶有限定名的)資原始檔放在res/values-v19/
資料夾下。這樣,當使用4.4或更高版本的系統時系統會自動使用該資料夾下的資原始檔。
1 2 3 4 5 |
; html-script: false ] <resources> <color name="holo_blue_bright">#CDFFFFFF</color> <color name="holo_blue_light">#ABFFFFFF</color> </resources> |
資原始檔中資源的ID可能會有一點誤導的嫌疑,因為該ID對應的顏色已經不再是藍色。但為了保持程式碼中引用資源部分的一致性,我們只是將該ID對應的顏色改為“白色”。
為了讓上面的資原始檔發揮作用,需要對樣式資原始檔做出一些修改,將安卓系統預置顏色定義改為使用本地自定義的顏色。例如:
1 2 3 4 5 |
; html-script: false ] <style name="minutesTextDaydream" parent="hoursTextDaydream"> <item name="android:textColor">@android:color/holo_blue_light</item> <item name="android:textStyle">normal</item> </style> |
改為:
1 2 3 4 5 |
; html-script: false ] <style name="minutesTextDaydream" parent="hoursTextDaydream"> <item name="android:textColor">@color/holo_blue_light</item> <item name="android:textStyle">normal</item> </style> |
(注意:這裡將原資原始檔的@android:color/holo_blue_light
改為@color/holo_blue_light
)
如果在4.4版本的裝置上執行,我們會看到使用新配色方案後的效果:
修改配色方案並沒有到此為止,還有一個容易被忽視的地方也需要修改。在res/xml/appwidget_info.xml
資原始檔中,會定義該小部件在選擇列表時的預覽圖片,這些圖片目前還在使用老的配色方案。當裝置使用4.4版本時,我們希望預覽圖也能使用新的配色方案。
只需將進行替換的圖片存放到適當的(帶限定名的)資料夾中,剩下的事情交給資原始檔管理器就可以了。
我們已經有名為widget.png
檔案,分別存放在res/drawable-mdpi
、res/drawable-hdpi
和res/drawable-xhdpi
資料夾下。此外,還需要提供4.4版本配色方案的同名資原始檔,並將其放入帶版本號和限定名的各個資料夾中:res/drawable-mdpi-v19
、res/drawable-hdpi-v19
和res/drawable-xhdpi-v19
。當App執行時,系統會根據當前裝置的版本和螢幕解析度自動選擇相應的資料夾下的資源。
再次執行App,在小部件選擇列表中可以看到新的配色方案已經啟用:
在該系列的下一篇文章中,我們會繼續給App新增一些動畫效果。
本文完整原始碼可以在這裡找到,文字時鐘App可以從Google Play市場下載。與文章改進對應的2.00版本將在近期釋出到市場。未來幾周內,文字時鐘App還將做更多的微小升級並提供更加豐富的功能。