安卓UI適配限定符
引言
對於程序在不同尺寸的Android機器上執行,對UI的適用性造成了額外的開銷,只是限定符的出現,非常方便的攻克了這個問題。通過創建限定符相關的文件夾來解決資源的載入。
限定符用處
限定符(mdpi,tvdpi,hdpi)能夠幫助我們推斷屏幕密度
限定符(land,port)能夠幫助我們區分屏幕橫豎屏狀態
限定符(en,fr…)能夠幫助我們語言和地區
限定符(v3,v4…)能夠幫助我們區分安卓版本號
限定符(1024x600…)能夠適配計算虛擬鍵或者不計算虛擬鍵的屏幕
……
Android SDK Supporting Multiple Screens話題
Supporting Multiple Screens
限定符列表
特征 | 限定符 | 描寫敘述 |
---|---|---|
屏幕尺寸 | small normal large xlarge |
small:這樣的屏相似低分辨率的QVGA屏幕。對於小屏的最小布局尺寸大約是320x426dp。比如QVGA低分辨率和VGA高分辨率。 normal:這樣的屏相似中等分辨率的HVGA屏幕。對於普通屏幕的最小布局尺寸大約是320x470dp。 如。WQVGA低分辨率屏、HVGA中等分辨率屏、WVGA高分辨率屏。 在大多數情況下,這樣的超大屏幕的設備由於太大而要放到背包中來攜帶,而且最有可能的是平板樣式的設備。
|
屏幕方向 | port land |
port:縱向設備(垂直) land:橫向設備(水平) 假設用戶旋轉屏幕,這個限定能夠在應用程序執行期間改變。 orientation配置字段指示當前設備的方向。 |
屏幕像素密度(dpi) | ldpi mdpi hdpi xhdpi nodpi tvdpi |
ldpi:針對大約120dpi的低分辨率屏幕。 mdpi:針對大約160dpi的中等分辨率屏幕(在傳統的HVGA上); hdpi:針對大約240dpi的高分辨率屏幕; xhdpi:針對大約320dpi的超高分辨率屏幕。被加入在API基本8以後的版本號中; nodpi:這個限定被用於不想依據匹配的設備分辨率進行縮放的位圖資源。 tvdpi:在mdpi和hdpi之間的屏幕。大約是213dpi。這樣的分組不是基本的分辨率,大多數是為電視來考慮的。而且大多數應用不須要它—提供mdpi和hdpi資源就能夠滿足大多數應用程序須要了。而且系統會適當的縮放它們。 這個限定符在API級別13以後被引入。
假設沒有提供與當前設備配置匹配的可選資源,那麽系統會使用最接近的資源。 |
MCC和MNC | mcc310 mcc310-mnc004 mcc208-mnc00 等 |
MCC是移動國家代碼的英文首字母縮寫(The mobile country code)。它的後面可選擇性的尾隨來自設備內的SIM卡的移動網絡代碼(MNC:mobile network code)。如在不論什麽載體上。mcc310代表美國。mcc310-mnc004代表美國的Venizon公司。mcc208-mnc00代表法國的Orange公司。 假設設備使用音頻連接(GSM 電話),那麽MCC和MNC的值來自SIM卡。 也能夠單獨使用MCC(比如,在應用程序中包括特殊國家合法的資源)。 假設僅須要指定語言環境,那麽能夠使用language和region限定符來替代(稍後討論)。假設決定要使用MCC和MNC限定符。就要細致測試。使它能夠滿足你所期望的工作。 |
語言和地區 | en fr en-rUS fr-rFR fr-rCA 等 |
語言是用兩個字母的ISO 639-1語言代碼定義的。緊跟其後的是可選的兩個ISO-3166-1-appha-2地區代碼字母(前面是小寫的“r”)。 這個編碼不區分大寫和小寫。r前綴被用於區分地區部分,不能夠單獨指定地區。 假設用戶改變了系統中的語言設置,那麽在應用程序的執行期間也能夠改變為相應的語言。 |
最小寬度 | sw<N>dp 比如: sw320dp sw600dp sw720dp 等 |
屏幕的基本尺寸,是指最短的可用屏幕區域。 詳細的說。設備的最小寬度是屏幕可用的寬度和高度中最短的那個(也能夠把它看做是屏幕的最小可能的寬度)。這樣就能夠使用這個限定符來確保應用程序至少有
|
可用寬度 | w<N>dp 比如: w720dp w1024dp 等 |
指定最小的可用屏幕寬度。在資源中應該以dp為單位來定義<N> 的值。當方向在橫向和縱向之間改變時。這個配置值會跟當前的實際的寬度相匹配。 這個值須要考慮屏幕裝飾占領的空間。因此,假設設備在顯示的左邊或右邊有一些固定的UI元素,那麽使用的寬度值就要比實際的屏幕尺寸小。由於這些固定UI元素的占用,使得應用程序的可用空間降低。
|
可用高度 | h<N>dp 比如: h720dp h1024dp 等 |
指定最小的可用屏幕高度,在資源中應該以dp為單位來定義的值,當方向在橫向和縱向直接改變時。這個配置值應該跟當前的實際高度匹配。 當應用程序給這個配置提供了不同值的多個資源文件夾時。系統會使用最接近(不超過)設備當前屏幕高度的那個配置。 這個要考慮屏幕裝飾的占用情況,因此,假設設備在顯示的上方或底部有一些固定的UI元素。那麽要使用的高度值要比實際的屏幕尺寸小,由於這些固定UI元素的占用,使得應用程序的可用空間降低。 不固定的屏幕裝飾(如電話的狀態欄能夠在全屏時被隱藏)是不考慮的,像標題欄或操作欄這樣的窗體裝飾也不考慮,因此應用必須準備處理比它們指定的空間要小的情況。
|
屏幕外觀 | long notlong |
long:長屏幕,如WQVGA、WVGA、FWVGA notlong:非長屏幕,如QVGA、HVGA、VGA 這個限定符被加入在API級別4以後的版本號中 這個限定符全然是基於屏幕的外觀比率。不相對屏幕的方向。
|
泊位模式 | car desk |
car:設備停靠在汽車中 desk:設備停靠在書桌中 這個限定符被加入在API級別8以後的版本號中,假設用戶改變了設備的停靠地點,那麽能夠在應用程序的執行期間改變這個限定。 能夠使用UiModeManager對象來啟用或禁止這樣的模式。 |
夜間模式 | night notnight |
night:夜間 notnight:白天 被加入在API級別8以後的版本號中,假設夜間模式被保留在自己主動模式中(默認),那麽在應用程序執行期間,會基於白天的時間來進行模式的改變。能夠使用UiModeManager對象來啟用或禁止這樣的模式。 |
觸屏類型 | notouch stylus finger |
notouch:非觸屏設備 stylus:有適用手寫筆的電阻屏設備 finger:觸屏設備 touchscreen配置字段,指示到了設備上的觸屏類型。 |
鍵盤可用性 | keysexposed keyshidden keyssoft |
keysexposed:設備有可用的鍵盤。假設設備啟用了軟鍵盤,那麽即使在硬鍵盤沒有暴露給用戶時也能夠使用這個限定符。假設沒有提供軟鍵盤或者軟鍵盤被禁用,那麽僅僅有在硬鍵盤被暴露給用戶時才幹夠使用這個限定符。 keyshidden:設備有可用的硬鍵盤。可是被隱藏了。而且設備沒有可用的軟鍵盤。 keyssoft:設備有可用的軟鍵盤,無論它是否可見。 假設提供了keysexposed資源。但沒有keyssoft資源,那麽僅僅要系統有可用的軟鍵盤。系統就會使用keysexposed資源而無論鍵盤是否可見。 假設用戶打開了硬鍵盤。就能夠在應用程序執行期間改變這個限定。 hardKeyboardHidden和keyboardHidden配置字段分別指明硬鍵盤的可見性以及可見的鍵盤類型(包括軟鍵盤)。 |
主要文本輸入法 | nokeys qwerty l2key |
nokeys:設備沒實用於文本輸入的硬鍵盤; qwerty:設備有標準的硬鍵盤。無論用戶是否可見; 12key:設備有12個鍵的硬鍵盤,無論用戶是否可見。 keyboard配置字段指明可用的主要文本輸入方法。 |
導航鍵的有效性 | navexposed navhidden |
navexposed:導航鍵對用戶可用; navhidden:導航鍵不可用。 假設用戶能夠看到導航鍵,那麽在應用程序執行時就能夠改變這個限定。 navigationHidden配置字段,指示導航鍵是否隱藏。 |
基本的非觸屏導航方法 | nonav dpad trackball wheel |
nonav:除了使用觸屏以外,設備沒有其它導航設施。
|
平臺版本號(API 級別) | 比如: v3 v4 v7 等 |
設備支持的API級別。 如v1代表API級別1(帶有Android1.0或更高版的設備),v4代表API級別4(帶有Android1.6或更高版本號的設備) |
限定符演示樣例
僅僅須要用橫線加限定符的方式就可以使用,xx-限定符
限定符執行順序
限定符的匹配是向下匹配。從高向低找。
博客名稱:王樂平博客
博客地址:http://blog.lepingde.com
CSDN博客地址:http://blog.csdn.net/lecepin
安卓UI適配限定符