Drawable(解析度)

來源:互聯網
上載者:User
480×320的螢幕:就是每一條水平線上包含有480個像素點,共有320條線,即掃描列數為480列,行數為320行。解析度不僅與顯示尺寸有關,還受顯像管點距、視頻頻寬等因素的影響。
 

(1)drawable-hdpi裡面存放高解析度的圖片,如WVGA (480x800),FWVGA (480x854)

(2)drawable-mdpi裡面存放中等解析度的圖片,如HVGA (320x480)

(3)drawable-ldpi裡面存放低解析度的圖片,如QVGA (240x320)

ldpi:240x320

mdpi:320x480

hdpi:480x800、480x854

xhdpi:至少960*720

xxhdpi:1280×720

android 自適應 多螢幕支援

1、螢幕相關概念

1.1解析度

是指螢幕上有橫豎各有多少個像素

1.2螢幕尺寸

指的是手機實際的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸

android將螢幕大小分為四個層級(small,normal,large,and extra large)。

1.3螢幕密度

每英吋像素數

手機可以有相同的解析度,但螢幕尺寸可以不相同,

Diagonal pixel表示對角線的像素值(=),DPI=933/3.7=252

android將實際的螢幕密度分為四個通用尺寸(low,medium,high,and extra high)

一般情況下的普通螢幕:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi

對於螢幕來說,dpi越大,螢幕的精細度越高,螢幕看起來就越清楚

1.4密度無關的像素(Density-independent pixel——dip)

dip是一種虛擬像素單位

dip和具體像素值的對應公式是dip/pixel=dpi值/160,也就是px = dp * (dpi / 160)

當你定義應用的布局的UI時應該使用dp單位,確保UI在不同的螢幕上正確顯示。

2、android多螢幕支援機制

Android的支援多螢幕機制即用為當前裝置螢幕提供一種合適的方式來共同管理並解析應用資源。

Android平台中支援一系列你所提供的指定大小(size-specific),指定密度(density-specific)的合適資源。

指定大小(size-specific)的合適資源是指small, normal, large, and xlarge。

指定密度(density-specific)的合適資源,是指ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high).

Android有個自動匹配機制去選擇對應的布局和圖片資源

1)介面布局方面

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

layout(放一些通用布局xml檔案,比如介面頂部和底部的布局,不會隨著螢幕大小變化,類似windos視窗的title bar),

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

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

layout-large(4英寸-7英寸之間),

layout-xlarge(7-10英寸之間)

2)圖片資源方面

需要根據dpi值準備5套圖片資源:

drawable:主要放置xml設定檔或者對解析度要求較低的圖片

drawalbe-ldpi:低解析度的圖片,如QVGA (240x320)

drawable-mdpi:中等解析度的圖片,如HVGA (320x480)

drawable-hdpi:高解析度的圖片,如WVGA (480x800),FWVGA (480x854)

drawable-xhdpi:至少960dp x 720dp

Android有個自動匹配機制去選擇對應的布局和圖片資源。

  系統會根據機器的解析度來分別到這幾個檔案夾裡面去找對應的圖片。

  在開發程式時為了相容不同平台不同螢幕,建議各自檔案夾根據需求均存放不同版本圖片。

3、AndroidManifest.xml 配置

android從1.6和更高,Google為了方便開發人員對於各種解析度機型的移植而增加了自動適配的功能

<supports-screens

android:largeScreens="true"

android:normalScreens="true"

android:smallScreens="true"

android:anyDensity="true"/>

3.1是否支援多種不同密度的螢幕

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檔案中的資源。

3.2是否支援大螢幕

android:largeScreens=["true" | "false"]

如果在聲明不支援的大螢幕,而這個螢幕尺寸是larger的話,系統使用尺寸為("normal")和密度為("medium)顯示,

不過會出現一層黑色的背景。

3.3是否支援小螢幕

android:smallScreens=["true" | "false"]

如果在聲明不支援的小螢幕,而當前螢幕尺寸是smaller的話,系統也使用尺寸為("normal")和密度為("medium)顯示

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

來匹配應用程式所需的最小尺寸。

4、Android提供3種方式處理螢幕自適應

4.1預縮放的資源(基於尺寸和密度去尋找圖片)

1)如果找到相應的尺寸和密度,則利用這些圖片進行無縮放顯示。

2)如果沒法找到相應的尺寸,而找到密度,則認為該圖片尺寸為 "medium",利用縮放顯示這個圖片。

3)如

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.