Android 多解析度機器適配

來源:互聯網
上載者:User

標籤:android   style   c   ext   a   width   

假設有如下解析度機器:

800 x 480

1024 x 600

1024 x 768

1280 x 800

1920 x 1200 

2048 x 1536

總共六種類解析度機器,如果按照dp為單位來細分可以分為幾種呢?

首先通過context.getResources().getDisplayMetrics().density擷取到當前機器的螢幕密度,然後通過dp = px/density進行換算可以得到機器對應的以dp為單位的大小。比如,我分別打出了自己手裡面裝置對應的dp,值如下:

裝置px大小

裝置螢幕密度dpi

裝置dp大小

對應的最小寬度

800 x 480

1

800 x 480

Sw480dp

1024 x 600

1

1024 x 600

Sw600dp

1024 x 768

1

1024 x 768

Sw720dp

1280 x 800 

1,另外一台機器是1.5

1280 x 800 另外一台是853 x 533

Sw720dp 另外一台是Sw480dp

1920 x 1200 

1.5

1280 x 800

Sw720dp

2048 x 1536

2

1024 x 768

Sw720dp

 

                                                                  表一 裝置dp 最小寬度描述表

 

關於最小寬度的概念可以看下面描述:

         螢幕的基本尺寸,是指最短的可用螢幕地區。具體的說,裝置的最小寬度是螢幕可用的寬度和高度中最短的那個(也可以把它看做是螢幕的最小可能的寬度)。這樣就可以使用這個限定符來確保應用程式至少有<N>dp的寬度可用於UI介面,而不管螢幕的當前方向。

例如,如果布局在任何時候都需要至少600dp的最小螢幕尺寸,那麼就能夠使用這個限定符,在res/layout-sw600dp/目錄中建立布局資源。系統只會在可用螢幕的尺寸至少是600dp的時候才會使用這些資源,而不管600dp是否是被使用者認知的高度或寬度。最小寬度是裝置的固定螢幕尺寸特徵,當螢幕的方向發生改變時,裝置的最小寬度不改變。

裝置的最小寬度需要考慮螢幕的裝飾和系統UI的佔用。例如,如果裝置有一些固定的UI元素要沿著最小寬度的軸向,佔用一定的螢幕空間,那麼系統聲明的最小寬度要比實際的螢幕尺寸要小,因為被系統佔用的像素部分對使用者應用程式的UI無效。因此,這個值應該是應用程式布局所需要的最小的實際尺寸(通常,這個值是布局支援的最小寬度,而不管螢幕的當前方向)。

以下是可以使用的通用螢幕尺寸的一些值:1.320,針對以下螢幕配置的裝置:

  240x320ldpi(QVGA手持功能)

  320x480mdpi(手持功能)

  480x800hdpi(高解析度手持功能)

2.480,針對480x800mdpi的螢幕(平板或手持功能)

3.600,針對600x1024mdip的螢幕(7英寸平板)

4.720,針對720x1280mdip的螢幕(10英寸平板)

當應用程式提供了多個帶有不同值的最小寬度限定符資來源目錄時,系統會使用最接近(不超出)裝置最小寬度的那個資源。

這個限定符被添加在API層級13中。

還要看android:requiresSmallestWidthDp屬性,它聲明了與你的應用程式相容的最小的最小寬度,並且smallestScreenWidthDp配置欄位會持有這個裝置最小寬度的值。

        從表一可以看到,七個裝置、六種解析度對應了三中最小寬度,因此我們適配了這幾種不同 最小寬度的情況就可以完成對上面所有機型的適配。怎樣根據最小寬度來適配不同機型呢?其實很簡單,只需要自訂下面幾個檔案夾裡面的檔案就可以了。

res/layout-sw320dp

res/layout-sw480dp

res/layout-sw600dp

res/layout-sw720dp

 

res/values-sw320dp

res/values-sw480dp

res/values-sw600dp

res/lvalues-sw720dp

 

舉個例子,假如我在做第一款機器的時候,所有的UI尺寸都是以720dp的機器來配置的,那麼對應到最小寬度為600dp的機器就應該是所有的尺寸大小除以1.2,對應到最小寬度為480dp的機器就應該是所有的尺寸大小除以1.5,依次類推。

當然,前提是你在布局裡面的尺寸都是用dp為單位,字型用sp或者dp為單位。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.