移動APP測試-Android螢幕適配問題(一)

qq_842354603發表於2019-04-17

Android中適配問題,是最常見和最難解決的事情,下面筆者就帶著大家來說一下適配的相關操作。(來源:千鋒軟體測試)

Android可以為當前的螢幕配置通過適當的方式管理應用程式的layout和bitmap drawables的表現,這種能力是Android支援多螢幕的基礎。系統處理的應用程式螢幕適配的大部分工作,儘管如此,為了更妥善處理不同的螢幕配置,應該注意以下幾點:

a99dd5ab25b34d23a3ee7e34de435d82.jpg

· 在清單檔案中明確宣告應用程式支援的所有螢幕尺寸

通過宣告應用程式支援的螢幕尺寸,可以保證只有那些螢幕尺寸被應用程式支援的裝置才可以下載該應用程式。宣告對不同螢幕尺寸的支援,也可以影響系統如何在更大的螢幕展現應用程式—特別地,應用程式是否在螢幕相容模式執行。宣告應用程式支援的螢幕尺寸,應該在manifest檔案中包括 <supports-screens>元素。

· 為不同的螢幕尺寸提供不同的佈局

預設情況下,Android重新調整應用程式的佈局,以適應當前的裝置螢幕。在大多數情況下,這工作得很好。在其他情況下,使用者介面可能看起來不太好,可能需要為不同螢幕尺寸的作調整。例如,在大螢幕上,可能要調整某些元素的位置和大小,充分利用額外的螢幕空間,或在一個較小的螢幕上,可能需要調整大小,讓所有元素都可以在螢幕上顯示。可以使用限定符來提供尺寸相關的資源,這些限定符包括small, normal, large, 和 xlarge。例如,一個超大大螢幕的佈局,應該在layout-xlarge/。

從Android 3.2(API Level 13)開始,上述尺寸組已被棄用,應該使用sw<N>dp 限定符定義佈局資源所需的最小可用寬度。例如,如果多窗格平板佈局至少需要600dp螢幕的寬度,應該放置在layout-sw600dp/下。

· 為不同的螢幕尺寸提供不同的bitmap drawable

預設情況下,Android縮放bitmap drawables(.png, .jpg,和.gif檔案)和Nine-Patch drawables(.9.png 檔案),使它們在每臺裝置上呈現合適的物理尺寸。

例如,如果應用程式只為基準,中型螢幕密度(MDPI)螢幕提供了bitmap drawable,那麼系統將會在高密度螢幕上放大它們,而在低密度螢幕上縮小它們。這種縮放可能會讓點陣圖產生失真。

為了讓點陣圖最好的展示,應該為不同螢幕密度提供不同解析度的點陣圖。

可以使用限定符來提供密度相關的資源,這些限定符包括ldpi (low), mdpi (medium), hdpi (high), 和 xhdpi (extra high)。例如,為高密度螢幕提供的點陣圖應該放在drawable-hdpi/下。

與廣義的尺寸和密度相對應的尺寸和密度限定符在上文的螢幕支援範圍中有描述。

在執行時,系統為任何給定資源通過以下步驟來儘可能確保它們在當前螢幕的顯示:

1. 系統使用適當的可選資源

當前螢幕的大小和密度的基礎上,系統使用應用程式提供的任意尺寸和密度相關資源。例如,裝置有一個高密度的螢幕並且應用程式請求一個drawable 資源,系統會尋找一個最匹配裝置配置的drawable 資源目錄。與其它可選資源相比,以hdpi 為限定符的資源目錄(比如drawable-hdpi/)會最佳匹配,所以系統使用該目錄下的drawable資源。

2. 如果沒有匹配的資源是可用的,系統將使用預設的資源並且對其進行縮放來適應當前的螢幕尺寸和密度。 

“預設”的資源是那些沒有配置限定符的資源。例如,在drawable/ 下的就是是預設的資源。系統假定預設資源是為基線螢幕尺寸和密度而設計的。正因為如此,系統對其採取縮放是比較可取的。

然而,當系統試圖尋找一個密度相關的資源但是在密度相關的目錄下沒有找到時,系統並不總是使用預設資源。系統可能會改用其他密度相關的資源之一,以提供更好的縮放結果。 例如,當尋找一個低密度資源而沒找到時,系統傾向於縮小高密度資源,因為系統可以通過縮放因子0.5輕鬆地將高密度資源縮小為低密度,這種縮放要比通過縮放因子0.75將中密度資源縮小為低密度不易失真。

相關文章