一、Android手機屏幕DPI
DPI概念自行百度
Android手機按照不同DPI分為:ldpi、mdpi、 hdpi、 xhdpi、 xxhdpi等。
在不同的DPI上,px和dp有不同的比例關系,關系如下
DPI類型 | DPI | dp | px |
---|---|---|---|
ldpi | 120 | 1 | 0.75 |
mdpi | 160 | 1 | 1 |
hdpi | 240 | 1 | 1.5 |
xhdpi | 320 | 1 | 2 |
Nexus 5x | 420 | 1 | ≈2.6 |
xxhdpi | 480 | 1 | 3 |
Nexus 6/6p | 560 | 1 | 3.5 |
二、不同設備的dp寬度
設備 | 分辨率 | DPI | 寬(px) | 寬(dp) |
---|---|---|---|---|
HTC Tatoo | 240x320 | 120 (ldpi) | 240 | 320 |
LG Optimus | 320x480 | 160 (mdpi) | 320 | 320 |
Nexus one/s | 480x800 | 240 (hdpi) | 480 | 320 |
Galaxy Nexus | 720x1280 | 320 (xhdpi) | 720 | 360 |
Nexus 5 | 1080x1920 | 480 (xxhdpi) | 1080 | 360 |
Nexus 5x | 1080x1920 | 420 | 1080 | ≈411.4 |
Nexus 6/6p | 1440x2560 | 560 | 1440 | ≈411.4 |
由上表可知:
- 在ldpi、mdpi和hdpi設備上屏幕的寬度都是320dp
- 在xhdpi和xxhdpi設備上屏幕的寬度都是360dp
- 而在420dpi和560dpi設備上屏幕的寬度都約等于411.4dp
三、面臨的問題
目前主流的分辨率一般為720x1280和1080x1920,所以一般設計師在設計Android應用時會選擇720x1280的畫布進行設計,如果只切一套圖,工程師會把圖放到xhdpi的資源文件夾中,此時,在xhdpi和xxhdpi的屏幕上都可以正常適配,但是在hdpi的屏幕上就會出現問題。
從上面的表格可以知道在xhdpi和xxhdpi時,屏幕的dp寬都是360dp;而在480x800的hdpi時,屏幕的dp寬度是320dp,少了40個dp,如果屏幕的dp寬度保持360dp的話,需要的像素寬度應該是540px,但市面上大部分的hdpi的手機都是480px的像素寬度。
為了適配480x800的手機屏幕,需要設計師在切圖的時候也要切出一套hdpi的圖,并且是480*800分辨率下的hdpi的圖。
另外在寫布局文件設置寬度的時候,也要需要考慮這個差值,hdpi下的dp寬度應該是xhdpi或xxhdpi下的dp寬度的0.8~0.9倍