在部落格 Android 資源國際化問題(2): finger的迷惑 基礎之上,繼續探討資源國際化問題。
不同像素的手機,可以配置不同的檔案,先看幾個概念。
具體可參看sdk-path/docs/guide/practices/screens_support.html
可以看出,模擬器對於小螢幕Small Screen的QVGA(320x240)就是ldpi、對於Nomal screen來說HVGA(480x320)就是mdpi。其它的見上述,可自己分析。
建立android項目,res檔案夾如下:
三張icon圖片名稱一樣,但是內容不一樣,按照上面排列順序,三張圖片分別是:、、
main.xml與上篇部落格的內容一致,可參考 Android 資源國際化問題(2): finger的迷惑
運行app在嗎320*480的模擬器上面,顯示效果如下
豎屏時,顯示效果:
橫屏時,顯示效果:
可以看出,選擇顯示的是drawable-mdpi檔案夾下面的圖片。
運行app在嗎320*240的模擬器上面,顯示效果如下
豎屏時,顯示效果:
橫屏時,顯示效果:
可以看出,選擇顯示的是drawable-ldpi檔案夾下面的圖片。
對於其它像素的手機,您可以自己測試。
那麼,在不同的手機中如何選擇圖片呢?sdk api有這樣一句話:
There is thus a 3:4:6 scaling ratio between the three densities, so a 9x9 bitmap in ldpi is 12x12 in mdpi and 18x18 in hdpi.
說明,要遵循 l:m:h = 3:4:6 的比例來為您的app選擇圖片。來接著挖掘資訊,看這張圖:
計算一下, l:m:h:x = 120:160:240:320 = 3:4:6:8
換句話說,您在drawable-ldpi中準備圖片是在32x32,那麼drawable-mdpi、drawable-hdpi、drawable-xdpi就需要48x48、72x72、96x96的圖片。
注意:xhdpi只適合android2.2及以上手機。
這裡必須明白一點,就是如果你只準備適合一種像素的drawable檔案夾,如drawable-hdpi,並不是在ldpi的手機上就不會顯示圖片或者報錯的問題。因為資源名稱是惟一的,在ldpi手機上照樣可以顯示圖片資源,只不過不好看而已。
另外,nodpi官方解釋nodpi
: This can be used for bitmap resources
that you do not want to be scaled to match the device density.
就是說drawable-nodpi下的不可以在不同像素的手機上自動縮放,那麼可以在該檔案夾下面放一些Bitmap(位元影像),當讓名稱可以與其它drawable檔案夾下面的圖片名稱不一致。具體什麼意思,後會有期吧。
推薦文章
Android Drawable、Bitmap、Canvas和Paint的區別
圖片:jpg png gif bmp 區別(四)