<supports-screensandroid:resizeable=["true"|"false"]
android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:xlargeScreens=["true" | "false"]
android:anyDensity=["true" | "false"]
android:requiresSmallestWidthDp="integer"
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>html
說明(DESCRIPTION):android
這個元素用於指定應用程序所支持的屏幕尺寸,並針對比應用程序所支持的屏幕還要大屏幕,啓用屏幕兼容模式。在應用程序中使用這個元素指定應用程序所支持的屏幕尺寸是相當重要的。web
若是應用程序調整尺寸屬性來填充整個屏幕,那麼應用程序就要支持這個給定的尺寸。一般對於大多數應用程序,系統能夠很好的完成這種調整工做,而且爲了讓應用程序在比一個手持設備大的屏幕上工做,你不須要作任何額外的工做。可是,針對不一樣的屏幕尺寸,經過提供可選的佈局資源來優化應用程序的UI常常是很重要的。例如,一個運行在手持設備上的Activity佈局,若是想要運行在平板電腦上,就須要修改這個Activity的佈局。ide
可是,若是爲了適應不一樣的屏幕尺寸而調整了尺寸,但應用程序也不能很好的工做,就可使用<supports-screens>元素的屬性來控制應用程序是否應該發佈給屏幕較小的設備,或者使用系統的屏幕兼容模式,讓UI放大以適應較大屏幕的要求。在沒有針對較大屏幕尺寸的設計,而且普通的尺寸不能達到合適結果時,屏幕的兼容模式會經過模擬普通尺寸的屏幕和中等密度來縮放UI,以便它可以填充整個屏幕,這樣會致使UI模糊,所以針對大屏幕的優化是比較好的。佈局
注意:Android3.2引入了新的屬性:android:requiresSmallestWidthDp、android:compatibleWidthLimitDp和android:largestWidthLimitDp。若是正在開發Android3.2或更高版本的應用程序,應該使用這些屬性來聲明應用程序所支持的屏幕尺寸,而不是基於通常的屏幕尺寸屬性。優化
有關如何正確的支持不一樣的屏幕尺寸,以便避免給應用程序使用屏幕兼容模式的更多信息,請閱讀「Supporting Multiple Screens」ui
(http://developer.android.com/guide/practices/screens_support.html)spa
屬性(ATTRIBUTES):設計
android:resizeableorm
這個屬性用於指示針對不一樣的屏幕尺寸,應用程序是否能夠調整尺寸。默認值是true。若是這個屬性設置了false,在大的屏幕上,系統會在屏幕兼容模式中運行該應用程序。
這個屬性被廢棄了,引入這個屬性主要是爲了幫助應用程序從1.5過渡到1.6。當多屏幕支持被引入時,就不該該在使用它了。
android:smallScreens
這個屬性用於指定應用程序是否支持較小外形的屏幕。一個small類型的屏幕被定義成一個比normal(傳統的HVGA)類型的屏幕還要小的屏幕。外部服務(如Google Play)不會把不支持小屏的應用程序提供給小屏設備,由於不多有可以確保該應用程序在小屏幕的設備上正常工做的平臺。這個屬性的默認值是true。
android:normalScreens
這個屬性用於指示應用程序是否支持普通外形的屏幕。典型的是HVGA中等密度的屏幕,可是WQVGA低密度和WVGA高密度屏幕也被認爲是普通屏幕。這個屬性的默認值是true。
android:largeScreens
這個屬性用於指示應用程序是否支持較大外形的屏幕。一個large類型的屏幕被定義成一個比normal類型的手持設備的屏幕明顯還要大的屏幕,而且爲了讓應用程序可以良好的使用,使用這個屬性時要特別當心,儘管能夠依賴系統來調整尺寸,以便可以填充屏幕。
這個屬性的默認值實際上在某些版本之間是不一樣的,所以最好在任什麼時候候都明確的聲明這個屬性。若是設置爲false,系統會啓用屏幕兼容模式,這時要格外的當心。
android:xlargeScreens
這個屬性用於指示應用程序是否支持超大外形的屏幕。一個xlarge屏幕被定義成一個比large屏幕還要大的屏幕,如平板電腦,爲了可以讓應用程序良好的使用,須要特別當心的使用這個屬性,儘管能夠依賴系統來UI的尺寸來填充屏幕。
android:anyDensity
這個屬性指明應用程序是否包含了可以適用於任何屏幕密度的資源。
對於支持Android1.6(API Level 4)和更高版本的應用程序,這個屬性的默認值是true,而且除非絕對的確認這是應用程序正常工做所必須的,不然不該該把它設置爲false。只是在應用程序直接操做位圖時才須要禁止這個屬性。
android:requiresSmallestWidthDp
這個屬性用於指定smallestWidth的最小需求。smallestWidth是屏幕空間的最短尺寸(以dp爲單位),它必須是對應用程序的UI是有效的。也就是說它是有效的屏幕的兩個維度的尺寸中最短的那個。所以爲了考慮設備跟應用程序的兼容性,設備的smallestWidth的值必需要大於等於這個屬性所設置的值。一般這個屬性值是針對佈局所支持的最小寬度,而不是屏幕當前的方向。
例如,典型的手持設備屏幕smallestWidth是320dp;7英寸的平板電腦的smallestWidth是600dp;10英寸的平板電腦的smallestWidth是720dp。這些值通常都是最小的寬度,由於它們是屏幕可用空間中最短的那個尺寸。
這對這個尺寸值的比較,須要考慮屏幕的裝飾和系統UI部分。例如,若是系統有一些固定的UI元素要顯示,那麼系統聲明的設備的最小寬度(smallestWidth)要比實際的屏幕尺寸要小,由於被系統UI佔用的屏幕像素對於應用的UI是無效的。所以,這個值應該是應用佈局所使用的最小寬度需求,而無論屏幕的當前方向。
若是應用程序可以針對較小屏幕尺寸進行正確的調整(small尺寸或最小寬度是320dp如下的屏幕),那麼就不須要這個屬性。不然就應該使用這個屬性值跟應用程序所使用的最小屏幕寬度限定符的值(sw<N>dp)相匹配。
警告:Android系統不會關注這個屬性,所以它不會影響應用程序在運行時的行爲。相反,它被服務(如Google Play)用於過濾應用程序。可是,當前Google Play不支持用這個屬性來過濾(在Android3.2上),所以若是應用程序不支持小屏幕設備,就應該繼續使用其餘的尺寸屬性。
這個屬性在API Level 13中被引入。
android:compatibleWidthLimitDp
這個屬性容許在設計應用程序時,經過指定最大的「smallest screen width」來啓用屏幕兼容模式,做爲一個用戶可選的功能。若是設備的有效屏幕的最小邊比這個屬性值大,那麼用戶依然可以安裝該應用程序,可是在運行時要使用屏幕兼容模式。默認狀況下,屏幕兼容模式彷佛被禁止的,而且經過會調整佈局的尺寸來填充屏幕,可是在系統欄中會有一個按鈕,讓用戶選擇屏幕兼容模式的打開和關閉。
若是應用程序跟全部的屏幕尺寸都兼容,而且它的佈局可以被正確的調整尺寸,就不須要使用這個屬性。
注意:當前,屏幕兼容模式只能模擬320dp寬度的手持設備屏幕,所以若是android:compatibleWidthLimitDp的值比320大,那麼屏幕兼容模式就不被適用。
這個在API Level 13中被引入。
android:largestWidthLimitDp
這個屬性容許再設計應用程序時,經過指定最大的「smallest screen width」來強制啓用屏幕兼容模式。若是設備有效屏幕的最小邊比這個屬性值大,應用程序就會運行在屏幕兼容模式中,而用戶沒有辦法禁止這種模式。
若是應用程序跟全部的屏幕尺寸都兼容,而且可以被正確的調整尺寸,就不需使用這個屬性。不然首先要考慮使用android:compatibleWidthLimitDp屬性。只有在因大屏幕尺寸調整而致使破壞了應用程序的功能的時候,而且使用屏幕兼容模式是惟一的方法的時候,才應該使用這個屬性。
注意:當前,屏幕兼容模式只能模擬320dp寬度的手持設備屏幕,所以若是android:compatibleWidthLimitDp的值比320大,那麼屏幕兼容模式就不被適用。
這個在API Level 13中被引入。
被引入的版本(INTRODUCED IN):
API Level 4