標籤:
文法(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
應用程式所支援的螢幕尺寸AndroidManifest.xml檔案詳解(supports-screens)(轉)