天天看點

Android系統版本及其螢幕适配

Android裝置分辨率趨勢

Android系統版本及其螢幕适配

 對應關系表

資源檔案夾   螢幕分辨率  類型  對應圖示尺寸 螢幕密度   1dp

xhdpi超高分辨率     1280*720  WQVGA    96*96   320     =2

hdpi 高分辨率          480*800   WVGA    72*72   240      =1.5

mdpi 中等分辨率  480*320  HVGA、VGA  48*48      160     =1

ldpi 低分辨率  320*240  QVGA    36*36  120       =0.75

800x480   hdpi

三星 GT-I9082     三星 GT-i8552              

1280x720  xhdpi

三星 SM-G7106     小米3    小米2s    小米2 (1280x722)  紅米2  紅米2A 

華為榮耀3c  華為G7  華為mate   紅米Note    

1080x1920 xxhdpi

三星 N7506V note3    三星GALAXY S4 I9500     小米四  小米note  紅米Note2 

華為榮耀6  華為p8    OPPO R7    OPPO N3    OPPO R5

2560 x 1440

小米note 頂配

Android布局的時候一般用dp為機關,而我們設計的時候一般用px為機關,這涉及到機關轉換問題,而在mdpi下,螢幕密度為160,px和dp是1:1關系,即1px =1dp(dpi/160),

是以為了更友善轉換,在進行設計的時候,可以優先以mdpi,即320px480px為藍本進行設計。

dpi(Dots Per Inch):每英寸點數,也可稱為像素密度,螢幕對角線像素值÷英寸值

px = dip * density / 160  (density 為螢幕密度 機關:每英寸有多少個顯示點)

Nexus 5螢幕  4.95inch   1920*1080  DPI = 445

 螢幕級别:

  注意螢幕級别是按照密度分級,和像素沒有關系。如果非要讓密度和像素扯上關系,則需要一個參照系,android使用mdpi級别作為标準參照螢幕,也就是說在320*480分辨率的手機上一個密度可以容納一個像素。然後其他密度級别則在此基礎上進行對比。如果理想情況下,480*800的螢幕一個密度可以容納1.5個像素。

  實體大小:

  機關是英寸而不是像素,也就說一個英寸在任何分辨率下顯示的大小都是一樣的,但是像素在密度不同的手機裡面顯示的實際的大小是不一樣的(這就是為什麼android手機需要适配的原因)。

  然後就是重點。

  假設1像素在160密度下顯示1英寸,則1像素在240密度基礎上顯示大約0.67英寸,在320密度下顯示0.5英寸。于是就出現一種情況,在電腦上的一個像素,在不同的手機上看實際的大小不一樣。那麼怎麼讓“設計效果”在不同的手機上看起來顯示的區域一樣呢?

  還是假設一個像素在160密度下的顯示在一個密度内,也假設就是一英寸。那麼需要幾個像素才能在240密度級别下顯示在一英寸範圍内呢?答案是1.5個像素(根據上圖的比率換算)。

  了解了這個關系,接下來就是圖示的制作。

  2、關于切圖。

  關于切圖有幾個建議:

  第一,長寬最好是3的倍數(根據android的推薦logo圖示的大小是48(mdpi),72(hdpi),96(xhdpi)得出的最小公約數)。

  第二,長寬最好是偶數。因為奇數在進行等比壓縮的時候可能有問題。

  第三,根據上面兩條,如果長寬是6的倍數最理想。

  第四,如果可以拉伸而不改變設計意圖的情況下,比如純色背景,則使用android的9path工具制作成.9的圖檔。

  3、關于圖示的适配。

  然後接下來的一切就和設計稿沒什麼關系。在切好圖的基礎上,根據螢幕密度、像素和實際大小的比例關系。假如設計司在480*800的分辨率下做好了設計圖,并且切好圖,如果你需要适配720*1280螢幕,該怎麼做?根據比例,他們的關系是2:3,于是你需要按照1.5倍比例制作圖示,比如你在480*800的設計稿上切下來一個20*20像素的圖,那麼你就需要制作一個等比放大成30*30像素的圖示,這樣同一個圖示在480*800的螢幕和720*1280的螢幕上顯示的實際大小才一樣。同理,如果你需要适配xxhdpi則需要在20*20的基礎上制作一個等比放大成40*40像素的圖示。

  4、關于圖示的目錄,480*800切下來的圖我們放在drawable-hdpi目錄下,按照2:3放大的圖示放在drawable-xhdpi目錄下,按照2倍放大的圖示放在drawable-xxhdpi目錄下。

  android會根據手機的密度優先查找對應的目錄的資源,

  比如408*800分辨率下的手機如果密度是160,則自動加載drawable-hdpi這個目錄下的圖示,

  如果720*1280密度是240的手機自動加載drawable-xhdpi這個目錄下的圖示。如果沒有這個檔案夾,則查找和240最接近的對應密度檔案夾。

  三、其它

  根據上面的步驟也不能完全解決适配的問題,隻能是大概适配,而就算根據上面的步驟大概适配了,實際在手機上的效果也有出入。

  比如魅族MX3的分辨率是1080*1800,标準情況下密度是480,但是他的密度大約是524,和480接近,也就是會查找drawable-xxhdpi這個資源下的檔案。也就是說你在480*800分辨率下切圖然後按兩倍放大的圖示在這台手機上顯示的效果還是比實際的小。

  而另一個要說的問題是540*960或者640*960,他們的密度很可能是或者接近240也可能是320。于是在480*800的設計稿上切下來的圖并且進行的适配制作,在這些手機上顯示的實際大小也可能或大或小。

.9.png是Android裡所支援的一種特殊的圖檔格式,可以實作部分拉伸。切圖時需要留白白 如下

在res/目錄下建立一個不同的layout檔案夾、values檔案夾、drawable檔案夾等資源檔案夾

資源檔案夾命名:資源名-屬性1-屬性2-屬性3-屬性4-屬性5.....( values-ldpi、values-land-mdpi)

即以<resources_name>-<qualifier>格式命名系統會根據螢幕的大小自己選擇合适的進行使用。

其中resources_name資源名就是資源類型名,包括:drawable, values, layout, anim, raw, menu, color, animator, xml;

<qualifier> 是一個配置限定符,指定對應的螢幕參數,限定符可以參考以下表:

手機特性   資源限定符   描述

螢幕尺寸   small    小尺寸螢幕

normal    正常大小的螢幕

large     大尺寸螢幕

xlarge    超大尺寸的螢幕

分辨率    320x240    values-ldpi-320x240

480x320    values-480x320

800x480    values-800x480

854x480    values-854x480

960x540    values-960x540、values-hdpi-960x540

960x640    values-960x640、values-xhdpi-960x640

1024x600   values-mdpi-1024x600

1280x720、1280x800 values-1280x720

其他    values-xhdpi-1184x768、          values-xhdpi-1280x720、          values-xhdpi-1920x1080

密度    ldpi     低密度~120dpi

mdpi    中密度~160dpi

hdpi     高密度~240dpi、

xhdpi    超高密度〜320dpi 、

nodpi    存放無視螢幕密度的資源,如:一些不能被拉      伸的圖檔放在 drawable-nodpi ,但寬和高要      寫wrap_content

tvdpi    主要用于電視,大多數App不需要用到

方向    land     橫向螢幕

port     縱向螢幕

版本    v1~v19    建立工程時可以看見,API 1到API 19

                 Android作業系統趨勢

參考:

http://www.cnblogs.com/tinyphp/p/4008400.html

http://www.umindex.com/devices/android_resolutions

http://www.hanshuliang.com/?post=18

轉載于:https://my.oschina.net/u/2358397/blog/503779

繼續閱讀