android资源适配
android程序在不同的環(huán)境(如分辨率不同的機型,不同語言的操作系統(tǒng))或狀態(tài)(如橫豎屏)下,需要不同的資源(如圖片,語言),一般情況下,這些資源是自適配的,只需要命名不同的資源文件夾,把同名的資源放入這些文件夾中即可
? 比如下面就是一個程序項目的資源文件夾:
?
不同的命名代表什么含義呢?詳細(xì)見下表:
| 限定符Qualifier | 值Values |
| 移動國家碼MCC和移動網(wǎng)絡(luò)碼MNC | 手機設(shè)備SIM卡上的移動國家碼和移動網(wǎng)絡(luò)碼。比如mcc310-mnc004?(美國,Verizon品牌);?mcc208-mnc00?(法國,Orange品牌);?mcc234-mnc00?(英國,BT品牌).? |
| 語言和區(qū)域Languageand region | 兩個字母的ISO639-1語言碼和ISO3166-1-alpha-2區(qū)域碼?(以"r"為前綴)。比如en-rUS,fr-rFR,es-rES.這個代碼是大小寫敏感的:語言碼是小寫字母,國家碼是大寫字母。你不能單獨指定一個區(qū)域,但是你可以單獨指定一個語言,比如en,fr, es, zh. |
| 屏幕方向Screenorientation | 縱向,橫向,正方形(port,land, square) |
| 屏幕像素密度Screenpixel density | 92dpi,108dpi等.?當(dāng)Android選擇使用哪個資源時,它對屏幕像素密度的處理和其它限定符不同。在文章后面描述的步驟1Android如何查找最匹配的目錄中,屏幕密度總被認(rèn)為是匹配的。在步驟4中,如果被考慮的限定符是屏幕密度,Android將選擇在那個位置的最佳匹配,而無需繼續(xù)步驟5。 |
| 觸摸屏類型Touchscreentype | 非觸摸式,觸摸筆,手指(notouch,stylus, finger) |
| 鍵盤可用方式Whetherthe keyboard is available to the user | 外在鍵盤,隱藏鍵盤,軟鍵盤(keysexposed,keyshidden,keyssoft) |
| 首選文本輸入方法Primarytext input method | 不支持按鍵,標(biāo)準(zhǔn)鍵盤,12鍵(nokeys,qwerty, 12key) |
| 首選非觸摸式導(dǎo)航方法Primarynon-touchscreen | 不支持導(dǎo)航,滑板,跟蹤球,滾輪(nonav,dpad, trackball, wheel) |
| 屏幕分辨率Screendimensions | 320x240,640x480,?等.?更大的分辨率必須先被指定。 |
| SDK版本SDKversion | 設(shè)備支持的SDK版本,比如v3。Android1.0SDK是v1,1.1SDK是v2,1.5SDK是v3。 |
| 小版本(Minorversion) | 你目前還不能指定小版本,它總是被設(shè)置為0。 |
drawable-en-rUS-land-mdpi
drawable-en-rUS-port-160dpi-finger-qwerty-dpad-480x320/(US代表美式英語)
舉個使用過程中的例子:
任意建一個android項目。看一下res目錄結(jié)構(gòu):
drawable-hdpi-finger與drawable-ldpi目錄下面兩張圖片名稱一樣,但是圖片不是同一張,分別是:
、
layout、layout-finger、layout-land-finger下面的main.xml文件內(nèi)容分別是:
layout/main.xml
[html]?view plaincopy
[html]?view plaincopy
layout-land-finger/main.xml
[html]?view plaincopy
運行App,在模擬器上顯示效果
切換模擬器屏幕方向:
可以看出,顯示的圖片始終是,而不是。說明帶有finger的文件夾優(yōu)先級別較高。
layout-land-finger:適合電容屏、電阻屏以及非觸摸屏的設(shè)備并且該設(shè)備是水平方向。
layout-finger:適合電容屏、電阻屏以及非觸摸屏的設(shè)備但不要求是水平方向。
layout:適合電阻屏以及非觸摸屏的設(shè)備。
另外,圖片資源應(yīng)該按照l:m:h =?3:4:6 的比例來設(shè)計,就是如果你只準(zhǔn)備適合一種像素的drawable文件夾,如drawable-hdpi,并不是在低像素密度的手機上就不會顯示圖片或者報錯的問題。因為資源名稱是惟一的,在低像素密度手機上照樣可以顯示圖片資源,只不過不好看而已,因為系統(tǒng)會自動調(diào)整hdi的大小來適配,如果系統(tǒng)想找一個ldpi(低密度)的資源,但找不到。那么系統(tǒng)會等比縮小hdpi的資源,為什么不尋找mdpi呢?因為系統(tǒng)對于hdpi更容易縮放,它的系數(shù)為0.5,相比mdpi的0.75來說。0.5的的性價比更高(方便計算,正確率也高一點)。關(guān)于這一點最好的證明就是android版本的QQ瀏覽器。你解壓后發(fā)現(xiàn)它關(guān)于drawable就只有drawable和drawable-hdpi兩個文件夾,看來騰訊里android的開發(fā)者應(yīng)該很熟悉android系統(tǒng)規(guī)律了,因為默認(rèn)的drawable 就是mdpi,只需要定義一套hdpi的drawable資源就行了。
當(dāng)然,如果你想保證一些資源文件保持原樣,尤其是圖片不被拉伸或壓縮,可以放入drawable-nodpi這個目錄下
總結(jié)
以上是生活随笔為你收集整理的android资源适配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于 Bochs 的操作系统内核实现
- 下一篇: ErWin简单使用说明