先前自學android開發的時候,是做2.2的應用開發,把一些小表徵圖檔案隨便放到drawable-hdpi,drawable-ldpi,drawable-mdpi三個目錄中的某個,在代碼中直接引用R.drawable.**這種方式就ok了.
不過昨天在公司做一個android項目(最低支援1.5的api,但是在2.3.3之下開發的)時,發生了這樣的問題,在代碼檢查中,確實是識別除了R.drawable.pic1這個圖片,但應用在虛擬設備上運行時,卻報錯找不到資源檔,然後還告知了資源檔的id.看了下,這個id對應的就是那個pic1的圖片.而這個圖片就放在R.drawable-hdpi裡面.所以我就很鬱悶,明明有這張圖片啊?
後面有個對android很熟的同事過來跟我說android1.5在引用圖片資源是去drawable檔案夾裡面找,android 2.2多出來的那三個檔案夾在android 1.5中是無法準確識別的.
晚上回來,上網查相關資料,找到了個跟我類似問題的文章:
-------------------------------------------------------------------
Android1.6目錄結構找不到res資源的問題
http://7090.iteye.com/blog/997482
建立的是1.6的目錄結構,在res下面有drawable-hdpi,drawable-ldpi,drawable-mdpi三個檔案夾,在這三個資源檔夾裡面都放置了一個face.png的檔案,但是打包的是target=android-3的apk ,就是打包成1.5,當運行在1.5的模擬器上時,就報錯了,說找不到res下面的檔案
Java代碼
android.content.res.Resources$NotFoundException
,後來使用1.6的模擬器就可以正常運行了,看來還是向下相容的問題,1.5的模擬器對應的R.java檔案找的還是drawable這個檔案夾裡面的內容,1.6以上會根據螢幕大小找到合適的資源檔
-------------------------------------------------------------------
看樣子,在開發android應用時,如果要兼顧老版本的android,需要單獨建立一個drawable檔案夾了.