安卓UI適配限定符

來源:互聯網
上載者:User

標籤:class   try   hdp   應該   時間   額外   螢幕尺寸   ack   csdn部落格   

引言

對於程式在不同尺寸的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高解析度屏。
large:這樣的屏相似中等解析度的VGA螢幕。對於大螢幕的最小布局尺寸大約是480x640dp。比如VGA和WVGA的中等解析度屏。
xlarge:這樣的屏被覺得比傳統的中等解析度的HVGA螢幕大。針對xlarge屏的最小布局尺寸大約是720x960dp。

在大多數情況下,這樣的超大螢幕的裝置由於太大而要放到背包中來攜帶,而且最有可能的是平板樣式的裝置。
注意:使用尺寸限定符不意味著資源僅用於這個尺寸的螢幕。假設沒實用限定符提供與當前裝置配置相匹配的可選資源,那麼系統會使用與配置最接近的資源。


警告:假設全部使用尺寸限定符的資源都比當前螢幕大,那麼系統將不會使用它們。而且應用程式會在執行時崩潰(比如。假設全部的布局都被標記了xlarge限定符,而裝置卻是一個普通尺寸的螢幕)。
這個限定符被加入在API層級4以後的版本號碼中。

螢幕方向 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以後被引入。
四種基本的解析度之間的縮放比例是:3:4:6:8(忽略tvdpi解析度),因此一個9x9的ldpi位元影像。在mdpi中是12x12、在hdpi中是18x18、在xhdpi中是24x24。


假設感覺在電視或其它某些裝置上的圖片資源不好看,而且想要試用tvdpi資源。那麼縮放因子是1.33*mdpi。比如,一個100px x 100px的mdpi圖片的圖片應該被放大成133px x 133px的tvdpi圖片。
注意:使用解析度限定符不意味著資源僅適用與相應解析度的螢幕。

假設沒有提供與當前裝置配置匹配的可選資源,那麼系統會使用最接近的資源。

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限定符。就要細緻測試。使它能夠滿足你所期望的工作。
還能夠查看佈建網域mcc和mnc,它們分別指示了當前的移動國家代碼和移動網路代碼。
mcc:http://developer.android.com/reference/android/content/res/Configuration.html#mcc
mnc:http://developer.android.com/reference/android/content/res/Configuration.html#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
螢幕的基本尺寸,是指最短的可用螢幕地區。

詳細的說。裝置的最小寬度是螢幕可用的寬度和高度中最短的那個(也能夠把它看做是螢幕的最小可能的寬度)。這樣就能夠使用這個限定符來確保應用程式至少有<N>dp的寬度可用於UI介面,而無論螢幕的當前方向。


比如,假設布局在不論什麼時候都須要至少600dp的最小螢幕尺寸,那麼就能夠使用這個限定符,在res/layout-sw600dp/檔案夾中建立布局資源。系統僅僅會在可用螢幕的尺寸至少是600dp的時候才會使用這些資源。而無論600dp是否是被使用者認知的高度或寬度。最小寬度是裝置的固定螢幕尺寸特徵,當螢幕的方向發生改變時。裝置的最小寬度不改變。
裝置的最小寬度須要考慮螢幕的裝飾和系統UI的佔用。比如。假設裝置有一些固定的UI元素要沿著最小寬度的軸向,佔用一定的螢幕空間。那麼系統聲明的最小寬度要比實際的螢幕尺寸要小。由於被系統佔用的像素部分對使用者應用程式的UI無效。因此,這個值應該是應用程式布局所須要的最小的實際尺寸(通常,這個值是布局支援的最小寬度。而無論螢幕的當前方向)。
下面是能夠使用的通用螢幕尺寸的一些值:
1.320。針對下面螢幕配置的裝置:
240x320ldpi(QVGA手持功能)
320x480mdpi(手持功能)
480x800hdpi(高解析度手持功能)
2.480,針對480x800mdpi的螢幕(平板或手持功能)
3.600。針對600x1024mdip的螢幕(7英寸平板)
4.720,針對720x1280mdip的螢幕(10英寸平板)
當應用程式提供了多個帶有不同值的最小寬度限定符資源檔夾時。系統會使用最接近(不超出)裝置最小寬度的那個資源。
這個限定符被加入在API層級13中。
還要看android:requiresSmallestWidthDp屬性,它聲明了與你的應用程式相容的最小的最小寬度。而且smallestScreenWidthDp配置欄位會持有這個裝置最小寬度的值。

可用寬度 w<N>dp
比如:
w720dp
w1024dp
指定最小的可用螢幕寬度。在資源中應該以dp為單位來定義<N>的值。

當方向在橫向和縱向之間改變時。這個配置值會跟當前的實際的寬度相匹配。
當應用程式給這個配置提供了多個不同值的資源檔夾時,系統會使用最接近(不超過)裝置當前螢幕寬度的那個配置。

這個值須要考慮螢幕裝飾佔領的空間。因此,假設裝置在顯示的左邊或右邊有一些固定的UI元素,那麼使用的寬度值就要比實際的螢幕尺寸小。由於這些固定UI元素的佔用,使得應用程式的可用空間降低。


這個特性被加入在API層級13中還要看screenWidthDp配置欄位。它持有當前的螢幕寬度。

可用高度 h<N>dp
比如:
h720dp
h1024dp
指定最小的可用螢幕高度,在資源中應該以dp為單位來定義的值,當方向在橫向和縱向直接改變時。這個配置值應該跟當前的實際高度匹配。
當應用程式給這個配置提供了不同值的多個資源檔夾時。系統會使用最接近(不超過)裝置當前螢幕高度的那個配置。

這個要考慮螢幕裝飾的佔用情況,因此,假設裝置在顯示的上方或底部有一些固定的UI元素。那麼要使用的高度值要比實際的螢幕尺寸小,由於這些固定UI元素的佔用,使得應用程式的可用空間降低。

不固定的螢幕裝飾(如電話的狀態列能夠在全屏時被隱藏)是不考慮的,像標題列或操作欄這樣的表單裝飾也不考慮,因此應用必須準備處理比它們指定的空間要小的情況。


這個限定符被加入在API層級13中。
還要看screenHeightDp配置欄位。它持有當前螢幕的高度。

螢幕外觀 long
notlong
long:長螢幕,如WQVGA、WVGA、FWVGA
notlong:非長螢幕,如QVGA、HVGA、VGA
這個限定符被加入在API層級4以後的版本號碼中
這個限定符全然是基於螢幕的外觀比率。不相對螢幕的方向。


還要看screenLayout配置欄位,它指示了螢幕是否是長屏。

泊位元模式 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配置欄位分別指明硬鍵盤的可見度以及可見的鍵盤類型(包括軟鍵盤)。
主要文本IME nokeys
qwerty
l2key
nokeys:裝置沒實用於文本輸入的硬鍵盤;
qwerty:裝置有標準的硬鍵盤。無論使用者是否可見;
12key:裝置有12個鍵的硬鍵盤,無論使用者是否可見。
keyboard配置欄位指明可用的主要文本輸入方法。

導航鍵的有效性 navexposed
navhidden
navexposed:導航鍵對使用者可用;
navhidden:導航鍵不可用。
假設使用者能夠看到導航鍵,那麼在應用程式執行時就能夠改變這個限定。
navigationHidden配置欄位,指示導航鍵是否隱藏。

基本的非觸屏導航方法 nonav
dpad
trackball
wheel
nonav:除了使用觸屏以外,裝置沒有其它導航設施。


dpad:裝置實用於導航的定向板(d-pad)。


trackball:裝置實用於導航的軌跡球。


wheel:裝置實用於導航的定向滾輪(不常見)。
navigation
配置欄位指明可用的導航方法類型。

平台版本號碼(API 層級) 比如:
v3
v4
v7
裝置支援的API層級。

如v1代表API層級1(帶有Android1.0或更高版的裝置),v4代表API層級4(帶有Android1.6或更高版本號碼的裝置)
警告:Android1.5和1.6僅僅有在限定符跟平台版本號碼全然匹配時。才幹匹配資源

限定符示範範例

僅僅須要用橫線加限定符的方式就可以使用,xx-限定符

限定符執行順序

限定符的匹配是向下匹配。從高向低找。

部落格名稱:王樂平部落格

部落格地址:http://blog.lepingde.com

CSDN部落格地址:http://blog.csdn.net/lecepin



安卓UI適配限定符

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.