- 語法:
-
<supports-screens android: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>
- 說明:
您可以指定應用程式支援的螢幕大小,並為螢幕大於應用程式可支援的尺寸啟用螢幕相容模式。請務必在應用程式中一律使用這項元素來指定應用程式可支援的螢幕大小。
注意:螢幕相容模式不該是您想要讓應用程式運作的模式,因為這會導致使用者介面因縮放而產生像素化和模糊的現象。讓應用程式在大螢幕上順利運作的方法,是依循螢幕相容性總覽,並針對不同螢幕大小提供其他版面配置。
如果應用程式可適當調整大小以填滿整個螢幕,就表示其可「支援」給定的螢幕尺寸。系統一般的尺寸調整可適用於大多數應用程式,無須另外執行任何操作,就能使應用程式在大於手機裝置的螢幕上運作。不過,建議您同時提供替代版面配置資源,以針對不同螢幕大小將應用程式的使用者介面最佳化。舉例來說,您可能會分別針對使用平板電腦裝置與在手機裝置上執行的活動修改版面配置。
不過,如果為了調整大小以符合不同大小的螢幕,而應用程式無法正常運作,可以使用
<supports-screens>
元素的屬性,控制是否要將應用程式發布至較小的螢幕,或使用系統的螢幕相容性模式,讓使用者介面擴大 (「縮放」) 以調整至較大的螢幕,如果您並未針對較大的螢幕尺寸設計,而一般調整大小的功能無法達到合適的結果,螢幕相容模式可模擬一般大小的螢幕及中密度,調整使用者介面,並放大畫面來填滿整個螢幕。請注意,這會造成使用者介面的像素化和模糊,因此仍建議您針對大螢幕將使用者介面最佳化。注意:Android 3.2 推出了新屬性:
android:requiresSmallestWidthDp
、android:compatibleWidthLimitDp
及android:largestWidthLimitDp
。如果您開發的應用程式適用於 Android 3.2 及以上版本,建議您使用這些屬性宣告支援的螢幕尺寸,而非採用以一般螢幕尺寸為根據的屬性。關於螢幕相容模式
如果應用程式為針對善用較大螢幕這一點善加設計,就很適合使用螢幕相容模式。不建議應用程式採用此模式,因為該模式會讓使用者體驗打折扣。螢幕相容模式有兩種版本,依執行應用程式的裝置版本而定。
在 Android 1.6 至 3.1 版的系統中,系統會在「郵票」視窗中執行您的應用程式。此模式會模擬 320dp x 480dp 螢幕並帶有黑色邊框,以填滿螢幕的剩餘區域。
在 Android 3.2 及以上版本中,系統會繪製一個版面配置,因為其會用在 320dp x 480dp 螢幕上,然後放大以填滿螢幕。這通常會導致變形,例如使用者介面出現模糊及像素化的現象。
若要進一步瞭解如何正確支援不同螢幕尺寸,以避免應用程式使用螢幕相容模式,請參閱螢幕相容性總覽。
- 屬性:
-
android:resizeable
- 指出應用程式是否可針對不同螢幕大小調整大小。根據預設,此屬性為是。如果設為否,系統在大螢幕上會以螢幕相容模式執行應用程式。
此屬性已遭淘汰。它是用來協助應用程式從 Android 1.5 版轉換至 1.6,當時首度出現需要支援多個螢幕。請勿使用。
android:smallScreens
- 指出應用程式是否支援較小的螢幕板型規格。
小螢幕是指長寬比小於「標準」(傳統 HVGA) 的小型螢幕。如果應用程式本身不支援小型螢幕,則小螢幕裝置將「無法」透過外部服務 (例如 Google Play) 使用該應用程式,因為這類平台無法讓應用程式在小螢幕上發揮應有的功能。預設為
"true"
。 android:normalScreens
- 指出應用程式是否支援「標準」螢幕板型規格。傳統上,這是指 HVGA 中密度螢幕,不過 WQVGA 低密度和 WVGA 高密度也被視為是標準螢幕。此屬性預設為「true」。
android:largeScreens
- 指出應用程式是否支援較大的螢幕板型規格。
大螢幕定義為遠大於「標準」手機螢幕的螢幕,因此可能需要特別注意,讓應用程式能夠充分利用此螢幕,儘管可能需要系統重新調整大小才得以填滿整個螢幕。
事實上這個預設值因版本而異,因此建議始終明確宣告此屬性。請注意,將其設為「false」時,通常會啟用螢幕相容模式。
android:xlargeScreens
- 指出應用程式是否支援超大型的螢幕板型規格。
超大螢幕是指尺寸比「大」螢幕 (例如平板電腦或更大的裝置) 還要大很多的裝置,而因此需要特別注意,讓應用程式能夠充分利用螢幕空間,而且在某些情況下可能需要系統重新調整畫面大小,以便填滿整個螢幕。
事實上這個預設值因版本而異,因此建議始終明確宣告此屬性。請注意,將其設為「false」時,通常會啟用螢幕相容模式。
此屬性是在 API 級別 9 中推出。
android:anyDensity
- 指出應用程式是否包含可因應任何螢幕密度的資源。
如果應用程式支援 Android 1.6 (API 級別 4) 及以上版本,則預設為「true」。一般而言不應設為「false」,除非確定您的應用程式一定要設為「false」才能正常運作。只有在應用程式直接操控點陣圖時,才需停用此功能 (詳情請參閱支援多個螢幕文件)。
android:requiresSmallestWidthDp
- 指定所需的最小 smallestWidth。smallestWidth 是螢幕空間的最小寬度 (以
dp
為單位),其必須適用於應用程式的使用者介面,也就是螢幕的兩邊中較短的一邊。因此,裝置的 smallestWidth 必須大於或等於此值,裝置才可視為與您的應用程式相容 (一般情況下,無論目前的螢幕方向為何,您在此提供的值都是指版面配置支援的「最小寬度」)。舉例來說,一般手機螢幕的 smallestWidth 為 320dp,7 吋平板電腦的 smallestWidth 為 600dp,而 10 英吋平板電腦的 smallestWidth 為 720dp。這些值通常就是 smallestWidth,因為它們是螢幕可用空間的最小尺寸。
這個值所比較的大小,會考慮到螢幕裝飾及系統使用者介面等元素。舉例來說,如果裝置螢幕上有一些永久性的使用者介面元素,系統考慮這些使用者介面元素後,會宣告裝置的最小寬度小於實際螢幕尺寸,因為這些螢幕像素值不適用於使用者介面。因此,無論螢幕目前的方向為何,您使用的值都應是版面配置所需的最小寬度。
如果您的應用程式可調整大小以配合較小的螢幕 (包括「小」尺寸,或最小寬度 320dp),您不必使用這項屬性。否則,您應該為這項屬性設定一個值,其符合最低螢幕寬度限定詞 (
sw<N>dp
) 中應用程式使用的最小值。注意事項:Android 系統不會注意這項屬性,因此不會影響應用程序在執行階段中的行為。反之,可利用這項屬性在 Google Play 等服務上用來篩選應用程式。不過,Google Play 目前不支援篩選這項屬性 (在 Android 3.2 上),因此如果應用程式不支援小螢幕,建議您繼續使用其他的螢幕大小屬性。
這項屬性在 API 級別 13 中推出。
android:compatibleWidthLimitDp
- 這項屬性可讓您指定應用程式設計的「最小螢幕寬度」上限,藉此啟用螢幕相容模式做為使用者的選用功能。如果裝置可用螢幕最小的一側大於這個值,使用者仍然可以安裝應用程式,但是會被要求在螢幕相容模式下執行。螢幕相容模式預設為停用狀態,系統也會照例將版面配置調整為適合螢幕的大小,但是系統列上會顯示一個按鈕,讓使用者可以開啟或關閉螢幕相容模式。
如果您的應用程式與所有螢幕大小相容,而且其版面配置可以正確調整大小,則不需使用這個屬性,
注意事項:螢幕相容模式目前只能模擬寬度為 320dp 的手機螢幕,因此如果
android:compatibleWidthLimitDp
的值大於 320,系統就不會套用螢幕相容模式。這項屬性在 API 級別 13 中推出。
android:largestWidthLimitDp
- 這項屬性可讓您指定應用程式設計的「最小螢幕寬度」上限,藉此強制啟用螢幕相容模式。如果裝置可用螢幕最小的一側大於這個值,應用程式會在螢幕相容模式下執行,而使用者無法將其關閉。
如果您的應用程式與所有螢幕大小相容,而且其版面配置可以正確調整大小,則不需使用此屬性。否則,應先考慮使用
android:compatibleWidthLimitDp
屬性。只有當應用程式在較大的螢幕上調整大小後,應用程式的功能毀損,且螢幕相容模式是使用者可以使用應用程式的唯一方式時,才應該使用android:largestWidthLimitDp
屬性。注意事項:目前螢幕相容模式只能模擬寬度為 320 dp 的手機螢幕,因此如果
android:largestWidthLimitDp
的值大於 320,系統就不會套用螢幕相容模式。這項屬性在 API 級別 13 中推出。
- 首次推出:
- API 級別 4
- 另請參閱:
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2022-09-18 (世界標準時間)。
[]
[]