詳解Android應用如何匹配不同的手機解析度

2021-06-20 02:42:50 字數 1927 閱讀 8500

從android sdk提供的幫助文件中,我們可以看到各種手機的解析度和對應的屏大小:qvga (240x320),wqvga400(240x400),wqvga432 (240x432),hvga (320x480),wvga800 (480x800),wvga854 (480x854)。

然而,由於解析度的不同,可能會導致同一布局對應不同解析度的手機顯示出不同的效果,如布局錯位、虛化等,那麼,如何解決這一問題呢? 

一、對於介面布局方面

1、根據物理尺寸的大小準備5套布局layout:

(1)layout(放一些通用布局xml檔案)

(2)layout-small(螢幕尺寸小於3英吋左右的布局)

(3)layout-normal(螢幕尺寸小於4.5英吋左右)

(4)layout-large(4英吋-7英吋之間)

(5)layout-xlarge(7-10英吋之間)

2、根據需求配置不同的布局layout。

如:240x320,則建立layout-320x240;400x800,則建立layout-800x400。需要注意的是:大的寫在前面,例如320,小的寫在後面,例如240;還有乘號要寫成小寫的x,不能寫成*。

另外,如果是通用的布局檔案,則放在layout下。

最後需注意:對於介面布局方面的解析度的匹配需要在androidmanifest.xml裡面新增下面一段,沒有這一段自適應就不能實現:

android:largescreens="true"

android:normalscreens="true"

android:smallscreens="true"

android:xlargescreens="true"

android:anydensity="true"/>

注釋:android:anydensity=["true" | "false"]

如果android:anydensity="true",指應用程式支援不同密度,會根據螢幕的解析度自動去匹配。

如果android:anydensity="false",應用程式支援不同密度,系統自動縮放尺寸和這個的座標。具體解釋一下系統是如何自動縮放資源的。例如我們在hdpi,mdpi,ldpi資料夾下擁有同一種資源,那麼應用也不會自動地去相應資料夾下尋找資源,這種情況都是出現在高密度,以及低密度的手機上,比如說一部240×320畫素的手機,如果設定android:anydensity="false",android系統會將240 x 320(低密度)轉換為 320×480(中密度),這樣的話,應用就會在小密度手機上載入mdpi檔案中的資源。

二、資源方面

1、需要根據dpi值準備5套資源:

(2)drawalbe-ldpi:低解析度的,如qvga (240x320)

(3)drawable-mdpi:中等解析度的,如hvga (320x480)

(4)drawable-hdpi:高解析度的,如wvga (480x800),fwvga (480x854)

(5)drawable-xhdpi:至少960dp x 720dp(一般比較少用)

android會有自動匹配機制去選擇對應的布局和資源,系統會根據機器的解析度來分別到這幾個資料夾裡面去找對應的。

三、動態實現的介面,樣式的設定(values方面)

不同解析度,介面的字型大小,字型等需要不同的樣式,且需要動態生成的情況下,需要把不同解析度的配置資訊儲存到應用中。

舉例:在res裡建立 values-480x320 values-800x400

並在建立的資料夾中分別建立string.xml

30px

在程式中直接呼叫r.dimen.text_size

最後,做一下總結:

(1)不要使用absolutelayout布局,盡量使用relativelayout和linearlayout; 

(2)在使用布局的時候盡量使用權重,可以有效減少死資料的使用,降低適配的工作量。

Android應用如何匹配不同手機解析度

布局適配 1 不要使用absolutelayout布局,盡量使用relativelayout和linearlayout 2 在使用布局的時候盡量使用權重,可以有效減少死資料的使用,降低適配的工作量。螢幕適配 在androidmanifest.xml裡面新增下面一段,沒有這一段自適應就不能實現 注釋 ...

Android 如何查詢最佳匹配資源

android 如何查詢最佳匹配資源 當您請求要為其提供備用資源的資源時,android 會根據當前的裝置配置選擇要在執行時使用的備用資源。為演示 android 如何選擇備用資源,假設以下可繪製物件目錄分別包含相同影象的不同版本 drawable drawable en drawable fr r...

Android應用程式簽名詳解

1 什麼是簽名?如果這個問題不是放在android開發中來問,如果是放在乙個普通的版塊,我想大家都知道簽名的含義。可往往就是將一些生活中常用的術語放在計算機這種 專業領域,大家就開始迷惑了。計算機所做的事情,或者說程式語言所做的事情,不正是在盡可能地模擬現實嗎?所以,計算機中所說的簽名和生活中所說的...