日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓UI适配限定符

發(fā)布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓UI适配限定符 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

對于程序在不同尺寸的Android機器上運行,對UI的適用性造成了額外的開銷,不過限定符的出現(xiàn),很方便的解決了這個問題。通過創(chuàng)建限定符相關(guān)的文件夾來解決資源的加載。


限定符用處

限定符(mdpi,tvdpi,hdpi)可以幫助我們判斷屏幕密度
限定符(land,port)可以幫助我們區(qū)分屏幕橫豎屏狀態(tài)
限定符(en,fr…)可以幫助我們語言和地區(qū)
限定符(v3,v4…)可以幫助我們區(qū)分安卓版本
限定符(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:這種屏被認為比傳統(tǒng)的中等分辨率的HVGA屏幕大。針對xlarge屏的最小布局尺寸大約是720x960dp。在大多數(shù)情況下,這種超大屏幕的設(shè)備因為太大而要放到背包中來攜帶,而且最有可能的是平板樣式的設(shè)備。
注意:使用尺寸限定符不意味著資源僅用于這個尺寸的屏幕。如果沒有用限定符提供與當(dāng)前設(shè)備配置相匹配的可選資源,那么系統(tǒng)會使用與配置最接近的資源。
警告:如果所有使用尺寸限定符的資源都比當(dāng)前屏幕大,那么系統(tǒng)將不會使用它們,并且應(yīng)用程序會在運行時崩潰(例如,如果所有的布局都被標(biāo)記了xlarge限定符,而設(shè)備卻是一個普通尺寸的屏幕)。
這個限定符被添加在API級別4以后的版本中。
屏幕方向port
land
port:縱向設(shè)備(垂直)
land:橫向設(shè)備(水平)
如果用戶旋轉(zhuǎn)屏幕,這個限定能夠在應(yīng)用程序運行期間改變。
orientation配置字段指示當(dāng)前設(shè)備的方向。
屏幕像素密度(dpi)ldpi
mdpi
hdpi
xhdpi
nodpi
tvdpi
ldpi:針對大約120dpi的低分辨率屏幕;
mdpi:針對大約160dpi的中等分辨率屏幕(在傳統(tǒng)的HVGA上);
hdpi:針對大約240dpi的高分辨率屏幕;
xhdpi:針對大約320dpi的超高分辨率屏幕,被添加在API基本8以后的版本中;
nodpi:這個限定被用于不想根據(jù)匹配的設(shè)備分辨率進行縮放的位圖資源。
tvdpi:在mdpi和hdpi之間的屏幕,大約是213dpi。這種分組不是主要的分辨率,大多數(shù)是為電視來考慮的,并且大多數(shù)應(yīng)用不需要它—提供mdpi和hdpi資源就可以滿足大多數(shù)應(yīng)用程序需要了,并且系統(tǒng)會適當(dāng)?shù)目s放它們。這個限定符在API級別13以后被引入。
四種主要的分辨率之間的縮放比例是:3:4:6:8(忽略tvdpi分辨率),因此一個9x9的ldpi位圖,在mdpi中是12x12、在hdpi中是18x18、在xhdpi中是24x24。
如果感覺在電視或其他某些設(shè)備上的圖片資源不好看,并且想要試用tvdpi資源,那么縮放因子是1.33*mdpi。例如,一個100px x 100px的mdpi圖片的圖片應(yīng)該被放大成133px x 133px的tvdpi圖片。
注意:使用分辨率限定符不意味著資源僅適用與對應(yīng)分辨率的屏幕。如果沒有提供與當(dāng)前設(shè)備配置匹配的可選資源,那么系統(tǒng)會使用最接近的資源。
MCC和MNCmcc310
mcc310-mnc004
mcc208-mnc00
MCC是移動國家代碼的英文首字母縮寫(The mobile country code),它的后面可選擇性的跟隨來自設(shè)備內(nèi)的SIM卡的移動網(wǎng)絡(luò)代碼(MNC:mobile network code)。如在任何載體上,mcc310代表美國,mcc310-mnc004代表美國的Venizon公司,mcc208-mnc00代表法國的Orange公司。
如果設(shè)備使用音頻連接(GSM 電話),那么MCC和MNC的值來自SIM卡。
也可以單獨使用MCC(例如,在應(yīng)用程序中包含特殊國家合法的資源)。如果僅需要指定語言環(huán)境,那么可以使用language和region限定符來替代(稍后討論)。如果決定要使用MCC和MNC限定符,就要仔細測試,使它能夠滿足你所期望的工作。
還可以查看配置域mcc和mnc,它們分別指示了當(dāng)前的移動國家代碼和移動網(wǎng)絡(luò)代碼。
mcc:http://developer.android.com/reference/android/content/res/Configuration.html#mcc
mnc:http://developer.android.com/reference/android/content/res/Configuration.html#mnc
語言和地區(qū)en
fr
en-rUS
fr-rFR
fr-rCA
語言是用兩個字母的ISO 639-1語言代碼定義的,緊跟其后的是可選的兩個ISO-3166-1-appha-2地區(qū)代碼字母(前面是小寫的“r”)。
這個編碼不區(qū)分大小寫,r前綴被用于區(qū)分地區(qū)部分,不能夠單獨指定地區(qū)。
如果用戶改變了系統(tǒng)中的語言設(shè)置,那么在應(yīng)用程序的運行期間也能夠改變?yōu)閷?yīng)的語言。
最小寬度sw<N>dp
例如:
sw320dp
sw600dp
sw720dp
屏幕的基本尺寸,是指最短的可用屏幕區(qū)域。具體的說,設(shè)備的最小寬度是屏幕可用的寬度和高度中最短的那個(也可以把它看做是屏幕的最小可能的寬度)。這樣就可以使用這個限定符來確保應(yīng)用程序至少有<N>dp的寬度可用于UI界面,而不管屏幕的當(dāng)前方向。
例如,如果布局在任何時候都需要至少600dp的最小屏幕尺寸,那么就能夠使用這個限定符,在res/layout-sw600dp/目錄中創(chuàng)建布局資源。系統(tǒng)只會在可用屏幕的尺寸至少是600dp的時候才會使用這些資源,而不管600dp是否是被用戶認知的高度或?qū)挾取W钚挾仁窃O(shè)備的固定屏幕尺寸特征,當(dāng)屏幕的方向發(fā)生改變時,設(shè)備的最小寬度不改變。
設(shè)備的最小寬度需要考慮屏幕的裝飾和系統(tǒng)UI的占用。例如,如果設(shè)備有一些固定的UI元素要沿著最小寬度的軸向,占用一定的屏幕空間,那么系統(tǒng)聲明的最小寬度要比實際的屏幕尺寸要小,因為被系統(tǒng)占用的像素部分對用戶應(yīng)用程序的UI無效。因此,這個值應(yīng)該是應(yīng)用程序布局所需要的最小的實際尺寸(通常,這個值是布局支持的最小寬度,而不管屏幕的當(dāng)前方向)。
以下是可以使用的通用屏幕尺寸的一些值:
1.320,針對以下屏幕配置的設(shè)備:
240x320ldpi(QVGA手持設(shè)備)
320x480mdpi(手持設(shè)備)
480x800hdpi(高分辨率手持設(shè)備)
2.480,針對480x800mdpi的屏幕(平板或手持設(shè)備)
3.600,針對600x1024mdip的屏幕(7英寸平板)
4.720,針對720x1280mdip的屏幕(10英寸平板)
當(dāng)應(yīng)用程序提供了多個帶有不同值的最小寬度限定符資源目錄時,系統(tǒng)會使用最接近(不超出)設(shè)備最小寬度的那個資源。
這個限定符被添加在API級別13中。
還要看android:requiresSmallestWidthDp屬性,它聲明了與你的應(yīng)用程序兼容的最小的最小寬度,并且smallestScreenWidthDp配置字段會持有這個設(shè)備最小寬度的值。
可用寬度w<N>dp
例如:
w720dp
w1024dp
指定最小的可用屏幕寬度,在資源中應(yīng)該以dp為單位來定義<N>的值。當(dāng)方向在橫向和縱向之間改變時,這個配置值會跟當(dāng)前的實際的寬度相匹配。
當(dāng)應(yīng)用程序給這個配置提供了多個不同值的資源目錄時,系統(tǒng)會使用最接近(不超過)設(shè)備當(dāng)前屏幕寬度的那個配置。這個值需要考慮屏幕裝飾占據(jù)的空間,因此,如果設(shè)備在顯示的左邊或右邊有一些固定的UI元素,那么使用的寬度值就要比實際的屏幕尺寸小,因為這些固定UI元素的占用,使得應(yīng)用程序的可用空間減少。
這個特性被添加在API級別13中還要看screenWidthDp配置字段,它持有當(dāng)前的屏幕寬度。
可用高度h<N>dp
例如:
h720dp
h1024dp
指定最小的可用屏幕高度,在資源中應(yīng)該以dp為單位來定義的值,當(dāng)方向在橫向和縱向直接改變時,這個配置值應(yīng)該跟當(dāng)前的實際高度匹配。
當(dāng)應(yīng)用程序給這個配置提供了不同值的多個資源目錄時,系統(tǒng)會使用最接近(不超過)設(shè)備當(dāng)前屏幕高度的那個配置。這個要考慮屏幕裝飾的占用情況,因此,如果設(shè)備在顯示的上方或底部有一些固定的UI元素,那么要使用的高度值要比實際的屏幕尺寸小,因為這些固定UI元素的占用,使得應(yīng)用程序的可用空間減少。不固定的屏幕裝飾(如電話的狀態(tài)欄能夠在全屏?xí)r被隱藏)是不考慮的,像標(biāo)題欄或操作欄這樣的窗口裝飾也不考慮,因此應(yīng)用必須準(zhǔn)備處理比它們指定的空間要小的情況。
這個限定符被添加在API級別13中。
還要看screenHeightDp配置字段,它持有當(dāng)前屏幕的高度。
屏幕外觀long
notlong
long:長屏幕,如WQVGA、WVGA、FWVGA
notlong:非長屏幕,如QVGA、HVGA、VGA
這個限定符被添加在API級別4以后的版本中
這個限定符完全是基于屏幕的外觀比率,不相對屏幕的方向。
還要看screenLayout配置字段,它指示了屏幕是否是長屏。
泊位模式car
desk
car:設(shè)備停靠在汽車中
desk:設(shè)備停靠在書桌中
這個限定符被添加在API級別8以后的版本中,如果用戶改變了設(shè)備的停靠地點,那么能夠在應(yīng)用程序的運行期間改變這個限定。可以使用UiModeManager對象來啟用或禁止這種模式。
夜間模式night
notnight
night:夜間
notnight:白天
被添加在API級別8以后的版本中,如果夜間模式被保留在自動模式中(默認),那么在應(yīng)用程序運行期間,會基于白天的時間來進行模式的改變。可以使用UiModeManager對象來啟用或禁止這種模式。
觸屏類型notouch
stylus
finger
notouch:非觸屏設(shè)備
stylus:有適用手寫筆的電阻屏設(shè)備
finger:觸屏設(shè)備
touchscreen配置字段,指示到了設(shè)備上的觸屏類型。
鍵盤可用性keysexposed
keyshidden
keyssoft
keysexposed:設(shè)備有可用的鍵盤。如果設(shè)備啟用了軟鍵盤,那么即使在硬鍵盤沒有暴露給用戶時也可以使用這個限定符。如果沒有提供軟鍵盤或者軟鍵盤被禁用,那么只有在硬鍵盤被暴露給用戶時才能夠使用這個限定符。
keyshidden:設(shè)備有可用的硬鍵盤,但是被隱藏了,并且設(shè)備沒有可用的軟鍵盤。
keyssoft:設(shè)備有可用的軟鍵盤,不管它是否可見。
如果提供了keysexposed資源,但沒有keyssoft資源,那么只要系統(tǒng)有可用的軟鍵盤,系統(tǒng)就會使用keysexposed資源而不管鍵盤是否可見。
如果用戶打開了硬鍵盤,就可以在應(yīng)用程序運行期間改變這個限定。
hardKeyboardHidden和keyboardHidden配置字段分別指明硬鍵盤的可見性以及可見的鍵盤類型(包括軟鍵盤)。
主要文本輸入法nokeys
qwerty
l2key
nokeys:設(shè)備沒有用于文本輸入的硬鍵盤;
qwerty:設(shè)備有標(biāo)準(zhǔn)的硬鍵盤,不管用戶是否可見;
12key:設(shè)備有12個鍵的硬鍵盤,不管用戶是否可見。
keyboard配置字段指明可用的主要文本輸入方法。
導(dǎo)航鍵的有效性navexposed
navhidden
navexposed:導(dǎo)航鍵對用戶可用;
navhidden:導(dǎo)航鍵不可用。
如果用戶能夠看到導(dǎo)航鍵,那么在應(yīng)用程序運行時就能夠改變這個限定。
navigationHidden配置字段,指示導(dǎo)航鍵是否隱藏。
主要的非觸屏導(dǎo)航方法nonav
dpad
trackball
wheel
nonav:除了使用觸屏以外,設(shè)備沒有其他導(dǎo)航設(shè)施。
dpad:設(shè)備有用于導(dǎo)航的定向板(d-pad)。
trackball:設(shè)備有用于導(dǎo)航的軌跡球。
wheel:設(shè)備有用于導(dǎo)航的定向滾輪(不常見)。
navigation
配置字段指明可用的導(dǎo)航方法類型。
平臺版本(API 級別)例如:
v3
v4
v7
設(shè)備支持的API級別。如v1代表API級別1(帶有Android1.0或更高版的設(shè)備),v4代表API級別4(帶有Android1.6或更高版本的設(shè)備)
警告:Android1.5和1.6只有在限定符跟平臺版本完全匹配時,才能匹配資源

限定符示例

只需要用橫線加限定符的方式即可使用,xx-限定符


限定符執(zhí)行順序

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


博客名稱:王樂平博客

博客地址:http://blog.lepingde.com

CSDN博客地址:http://blog.csdn.net/lecepin



總結(jié)

以上是生活随笔為你收集整理的安卓UI适配限定符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。