android屏幕分辨率、密度、尺寸、px、dp等

****** ps看完之后就知道怎么和美工部的小姐姐解释为什么图片不要用px啦!  


1.什么是屏幕尺寸、分辨率和像素密度?


屏幕尺寸

单位:英寸(inch)   1英寸 = 2.54厘米

目前市场上屏幕尺寸以5.5英寸为主(Android 2018年),数据由【友盟】提供。

推荐大家去看下,是一家数据统计网站,国内是比较知名的统计网站和工具。


屏幕分辨率: 

定义:横纵向上的像素点        ( 分辨率越高,显示的效果越好)

单位:px   1px = 1像素点

 一般表达的方式,纵向像素 * 横向像素 = 1920 * 1080

目前市场上手机屏幕分辨率 还是以1920*1080像素为主



屏幕像素密度

定义:指的是每英寸上的像素点        (密度越高,显示效果越好)

单位:dpi 

 ****************像素密度与【屏幕尺寸】和【分辨率】有关******************


下面举个“栗子”

一步4.95英寸、屏幕分辨率是1920*1080的手机,求屏幕像素密度


手机4.95英寸,指的是手机对角线的长度


因为AC=1920,BC=1080,所以AB≈2203

所以像素密度 = 2203 / 4.95 ≈ 445



为什么我们要用android开发的时候不用px做为单位?


px(像素)

构成图像的最小单位



dp 、dip

密度无关像素     【注意,dip和dpi不一样】

如果在160dpi(像素密度为160),那么 1dip = 1px

        在240dpi(像素密度为240),那么 1.5dip = 1px        (后面会解释,别着急)


举个“栗子”

在2部手机中

A手机 分辨率为 480*320,像素密度为 160DPI

B手机 分辨率为 800*480,像素密度为 240DPI


A手机


B手机

如果我们图片要在A手机宽度铺满全屏显示的话,我们就得设置图片宽度为320px

我们要B手机宽度铺满全屏显示,需要设置多少?得设置480px。

那么问题来了,android手机那么多,分辨率并不是固定的(参考楼上分辨率数据),不像iPhone,屏幕的分辨率是固定的。我们想要图片在每部手机显示都是横向铺满的,设置px的话明显有问题。

所以,我们开发的时候单位一般设置为dp、dip

如果我们图片设置320dp,在480*320上,1dp=1px,所以图片是铺满的

在800*480手机上,1px = 1.5dp,所以320dp = 320dp * 1.5 = 480dp,所以图片也是铺满的


可能到这里小伙伴们头脑没转过来,为什么1px在不同分辨率手机上,等于的dp是不同的呢?

因为手机的像素密度不同啊!

上面说过dp、dip叫做密度无关像素,你可以这么理解,dp和dip存在的意义,是和像素密度没有关系的。我使用dp作为单位设置控件,不管你什么屏幕大小,多大的dpi,显示的效果始终保持一致。就是专门用于不同手机屏幕分辨率,我却能都适应。至于160dpi里1dp=1px,480dpi里1dp=1.5px,为什么这么设置呢?因为人家google就这么定义的。没必要深究

px和dp的换算公式:px = dp * (dpi / 160)



sp

定义:根据字体首选项进行缩放

sp绝大部分都是用来设置文字大小的大小.

google开发指导手册上推荐我们设置12sp以上大小的单位,不要用12sp以下,以为用户可能看不清。推荐使用大小有12sp、14sp、18sp和22sp作为我们首选的字体大小。

字体设置的时候    不能有   小数和奇数。因为字体放缩的时候可能对精度的丢失



最后如果大家有空就看下这个android design  对大家还是有些帮助的

http://www.apkbus.com/design/

你可能感兴趣的:(android屏幕分辨率、密度、尺寸、px、dp等)