Android屏幕适配—被偷走的dp

一、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倍

你可能感兴趣的:(Android屏幕适配—被偷走的dp)