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