前言
一入 Android 深似海,相信很多 Android 開發(fā)者深有體會(huì),Android 系統(tǒng)版本的碎片化,Android 硬件設(shè)備的多樣性,第三方 Rom 的不確定因素。現(xiàn)在想開發(fā)一個(gè)合格的商業(yè)化 App 真的不容易,先不說(shuō)別的,應(yīng)用的兼容性就是一項(xiàng)技術(shù)和耐心的雙重考驗(yàn),想完美適配各種情況可以說(shuō)是不可能的,往往都是在人力和適配率之間尋找平衡,今天要說(shuō)的 drawable 就是需要適配的一個(gè)重要角色。
配置限定符
對(duì)于不同的屏幕密度、不同的設(shè)備方向,不同的語(yǔ)言和區(qū)域,都會(huì)涉及到備選 drawable 資源,在運(yùn)行時(shí),Android 會(huì)檢測(cè)當(dāng)前設(shè)備配置并根據(jù)具體規(guī)則(后面會(huì)提到)為應(yīng)用加載合適的資源。下面是可以使用的配置限定符,需要說(shuō)明的是這些配置限定符不僅對(duì) drawable 有效,對(duì)其他資源類型(如:layout 等)也有效:
移動(dòng)國(guó)家代碼 (MCC):mcc310, mcc310-mnc004, mcc208-mnc00
語(yǔ)言和區(qū)域:en, fr, en-rUS 等等
布局方向:ldrtl(從右到左)ldltr(從左到右)
smallestWidth:sw<N>dp 如:sw320dp, sw600dp, sw720dp 等等,屏幕可用高度和寬度的最小尺寸,屏幕的“最小可能尺寸”。
可用寬度:w<N>dp 如:w720dp, w1024dp 等等,指定資源應(yīng)該使用的最小可用屏幕寬度,以 dp 為單位,由 <N> 值定義。在橫向和縱向之間切換時(shí),為了匹配當(dāng)前實(shí)際寬度,此配置值也會(huì)隨之發(fā)生變化。
可用高度:h<N>dp 如:h720dp, h1024dp 等等,指定資源應(yīng)該使用的最小可用屏幕高度,以dp為單位,由 <N> 值定義。 在橫向和縱向之間切換時(shí),為了匹配當(dāng)前實(shí)際高度,此配置值也會(huì)隨之發(fā)生變化。
屏幕尺寸:small, normal, large, xlarge
屏幕縱橫比:long 寬屏,如 WQVGA、WVGA、FWVGA;notlong 非寬屏,如 QVGA、HVGA 和 VGA
屏幕方向:port 設(shè)備處于縱向(垂直),land 設(shè)備處于橫向(水平)
UI 模式:car, desk, television, appliance, watch
夜間模式:night 夜間,nontight 白天
屏幕像素密度:ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi, nodpi, tvdpi
觸摸屏類型:notouch, finger
鍵盤可用性:keysexposed, keyshidden, keyssoft
主要文本輸入法:nokeys, qwerty, 12key
導(dǎo)航鍵可用性:navexposed 導(dǎo)航鍵可供用戶使用,navhidden 導(dǎo)航鍵不可用
主要非觸摸導(dǎo)航方法:nonav, dpad, trackball, wheel
平臺(tái)版本(API 級(jí)別):v3, v4, v7 等等,如 v1 對(duì)應(yīng)于 API 級(jí)別 1,v4 對(duì)應(yīng)于 API 級(jí)別 4
如果你認(rèn)真研究下每個(gè)配置限定符,你就會(huì)體會(huì)到:想完美適配各種情況可以說(shuō)是不可能的,其實(shí)我們平時(shí)最常用的也是基本必須要用的就是屏幕像素密度,這里有必要詳細(xì)的說(shuō)一下該參數(shù):
ldpi:低密度屏幕;約為 120dpi。
mdpi:中等密度(傳統(tǒng) HVGA)屏幕;約為 160dpi。
新聞熱點(diǎn)
疑難解答
圖片精選