Android開發者指南-Manifest.xml-


>[原創譯文]Android開發者指南-Manifest.xml-<supports-screens

(2012-01-11 10:00:48)

<supports-screens>

版本:Android 3.2

語法:

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

 

包含於:

<manifest>

 

說明:

指定應用程序支持的屏幕尺寸,並對大於程序支持的屏幕啟用屏幕兼容模式。總是用本元素來指定程序支持的屏幕尺寸是非常重要的。

所謂應用程序“支持”的屏幕尺寸,是指程序能夠自動縮放來填充整個屏幕。通常系統提供的縮放功能可以適用於大多數應用程序,不必做什么額外的調整工作就能讓程序在屏幕更大的手持設備上正常運行。但是常常要利用替代布局資源來優化用戶界面以適應各種屏幕尺寸。比如,為了區別在平板設備和手持設備上的運行,可能需要修改activity的布局。

然而,如果程序為適應不同的屏幕尺寸進行縮放后不能正常運行,可以利用<supports-screens>元素的屬性進行限制,使得程序只能在小屏幕上運行,或使用系統的屏幕兼容模式來縮放用戶界面以適應較大的屏幕。如果沒有考慮大屏幕的設計並且正常的縮放不能獲得理想的結果,屏幕兼容模式將會通過仿真正常尺寸的屏幕和中等屏幕密度來確定用戶界面的縮放比例,然后進行縮放來填充整個屏幕。注意這會導致用戶界面的像素化和模糊,因此最好是為大屏幕對用戶界面進行優化。

注意:Android 3.2引入了新的屬性:android:requiresSmallestWidthDpandroid:compatibleWidthLimitDpandroid:largestWidthLimitDp。如果是開發Android 3.2以上版本的應用程序,應該使用這些屬性來聲明對屏幕尺寸的支持,而不是用基於普通屏幕尺寸的屬性。

關於支持各種屏幕尺寸、避免使用屏幕兼容模式的詳情,請參閱支持多種屏幕

屬性:

android:resizeable

指明應用程序是否根據不同的屏幕尺寸進行縮放。如果設為否,則在較大屏幕上系統將以屏幕兼容模式運行應用程序。

本屬性已過時。為了幫助程序從Android 1.5升級為1.6才引入本屬性,當時第一次引入了對多種屏幕的支持。不應再使用本屬性。

android:smallScreens

指明應用程序是否支持較小屏幕。較小的屏幕是指小於“normal”(傳統的HVGA)大小的屏幕。不支持小屏幕的應用程序將在外部服務(比如Android Market)中禁止用於小屏幕設備,因為只有很少一部分平台能讓程序運行在小屏幕上。缺省值是“true”。

android:normalScreens

指明應用程序是否支持“normal屏幕尺寸。傳統意義上指的是中等密度的HVGA 屏幕,但低密度的WQVGA和高密度的WVGA一般也被視為是正常尺寸。缺省屬性是“true”。

android:largeScreens

指明應用程序是否支持大屏幕尺寸。大屏幕是指明顯比“normal”手持設備屏幕更大的尺寸。雖然依賴於系統的縮放也能全屏顯示,但為了更好的用戶體驗可能需要對程序組件進行特定的處理。

本屬性的缺省值依版本而各不相同,因此最好是一直都明確聲明這個屬性。注意設為“false”將總是啟用屏幕兼容模式

android:xlargeScreens

指明應用程序是否支持超大屏幕尺寸。超大屏幕是指明顯比“large”屏幕更大的尺寸,比如平板設備(或更大),雖然依賴於系統的縮放也能全屏顯示,但為了更好的用戶體驗可能需要對程序組件進行特定的處理。

本屬性的缺省值依版本而各不相同,因此最好是一直都明確聲明這個屬性。注意設為“false”將總是啟用屏幕兼容模式

本屬性自API level 9引入。

android:anyDensity

指明應用程序是否包含適用於任何屏幕密度的資源。

對於支持Android 1.6 (API level 4)以上版本的應用程序而言,本屬性缺省值是“true”。除非絕對確認程序必須要能運行,不應設為“false”。只有應用程序要直接操作位圖時(詳情參閱支持多種屏幕文檔),才可能需要禁用此選項。

android:requiresSmallestWidthDp

指定程序所需的smallestWidth最小值。smallestWidth是指可被程序用戶界面使用的屏幕可用空間的最小值(單位為dp)——指可用屏幕兩邊中最短的那條邊長。為了保證與應用程序兼容,設備的smallestWidth必須大於等於本屬性值。(通常此值對應於布局layout所支持的“最小寬度”,而與屏幕當前的方向無關。)

例如,典型的手持設備的最小寬度是320dp7英寸的平板設備的最小寬度是600dp10英寸的平板設備的最小寬度是720dp。因為這些值即為屏幕可用空間的最小值,所以一般也即是smallestWidth的值。

在計算屏幕上的組件排列和系統用戶界面大小時會與本屬性值進行比較。例如,如果設備屏幕上需要顯示一些永久性的用戶界面元素,這些元素占用的屏幕位置對於其它用戶界面元素是不可用的,通過對這些元素尺寸進行計算,系統聲明的設備smallestWidth會比實際屏幕尺寸要小些。因此,應該用layout所需的最小寬度來設置此值,而與屏幕的方向無關。

如果應用程序能在小屏幕上正確縮放(最低是small尺寸或最小寬度320dp),那就不需要用到本屬性。否則,就應該為最小屏幕寬度標識符設置本屬性來匹配應用程序所需的最小尺寸。

警告:Android系統並不關心本屬性,因此它不會影響程序運行時的表現。它是用於為諸如Android Market之類的服務啟用過濾功能。不過,Android Market 當前還不支持對這個屬性的過濾Android 3.2),因此如程序不支持小屏幕的話還應繼續使用其它屏幕尺寸的屬性來進行限制。

本屬性自API level 13引入。

android:compatibleWidthLimitDp

通過指定程序支持的“最小屏幕寬度”的最大值,本屬性可啟用屏幕兼容模式作為用戶可選項。如果設備可用屏幕的最小邊長大於在此設置的值,用戶將仍可以安裝程序,但會運行在屏幕兼容模式。缺省情況下,屏幕兼容模式將被關閉,layout將如常縮放至全屏顯示,但系統狀態欄中會出現一個按鈕,用戶可以用此按鈕來開關屏幕兼容模式。

如果應用程序能兼容所有的屏幕尺寸,layout也能正確縮放,那就不需要用到本屬性。

注意:目前屏幕兼容模式只能在手持設備上仿真320dp寬度的屏幕,因此android:compatibleWidthLimitDp大於320時屏幕兼容模式將不會生效。

本屬性自API level 13引入。

android:largestWidthLimitDp

通過指定程序支持的“最小屏幕寬度”的最大值,本屬性可強制開啟屏幕兼容模式。如果設備屏幕的最小邊長大於本屬性值,應用程序將運行在屏幕兼容模式,且用戶無法將其關閉。

如果應用程序能兼容所有的屏幕尺寸,layout也能正確縮放,那就不需要用到本屬性。不然也應優先考慮使用android:compatibleWidthLimitDp屬性。僅當應用程序縮放到大屏幕時會崩潰,屏幕兼容模式是用戶使用的唯一方式,才會用到android:largestWidthLimitDp屬性。

注意:目前屏幕兼容模式只能在手持設備上仿真320dp寬度的屏幕,因此android:largestWidthLimitDp大於320時屏幕兼容模式將不會生效。

本屬性自API level 13引入。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM