AndroidManifest.xml文件詳解(supports-screens)

轉自:http://www.cnblogs.com/andriod-html5/archive/2012/05/21/2539418.html

語法(SYNTAX):

<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"/>

被包含於(CONTAINED IN):

<manifest>

說明(DESCRIPTION):

這個元素用於指定應用程序所支持的屏幕尺寸,並針對比應用程序所支持的屏幕還要大屏幕,啓用屏幕兼容模式。在應用程序中使用這個元素指定應用程序所支持的屏幕尺寸是至關重要的。

如果應用程序調整尺寸屬性來填充整個屏幕,那麼應用程序就要支持這個給定的尺寸。通常對於大多數應用程序,系統可以很好的完成這種調整工作,並且爲了讓應用程序在比一個手持設備大的屏幕上工作,你不需要做任何額外的工作。但是,針對不同的屏幕尺寸,通過提供可選的佈局資源來優化應用程序的UI經常是很重要的。例如,一個運行在手持設備上的Activity佈局,如果想要運行在平板電腦上,就需要修改這個Activity的佈局。

但是,如果爲了適應不同的屏幕尺寸而調整了尺寸,但應用程序也不能很好的工作,就可以使用<supports-screens>元素的屬性來控制應用程序是否應該發佈給屏幕較小的設備,或者使用系統的屏幕兼容模式,讓UI放大以適應較大屏幕的要求。在沒有針對較大屏幕尺寸的設計,並且普通的尺寸不能達到合適結果時,屏幕的兼容模式會通過模擬普通尺寸的屏幕和中等密度來縮放UI,以便它能夠填充整個屏幕,這樣會導致UI模糊,因此針對大屏幕的優化是比較好的。

注意:Android3.2引入了新的屬性:android:requiresSmallestWidthDp、android:compatibleWidthLimitDp和android:largestWidthLimitDp。如果正在開發Android3.2或更高版本的應用程序,應該使用這些屬性來聲明應用程序所支持的屏幕尺寸,而不是基於一般的屏幕尺寸屬性。

有關如何正確的支持不同的屏幕尺寸,以便避免給應用程序使用屏幕兼容模式的更多信息,請閱讀“Supporting Multiple Screens”

http://developer.android.com/guide/practices/screens_support.html

屬性(ATTRIBUTES):

android:resizeable

這個屬性用於指示針對不同的屏幕尺寸,應用程序是否可以調整尺寸。默認值是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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章