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

时间:2024-03-31 10:42:16

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

屏幕尺寸

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

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

推荐大家去看下,是一家数据统计网站,国内是比较知名的统计网站和工具。
android屏幕分辨率、密度、尺寸、px、dp等


屏幕分辨率:

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

单位:px 1px = 1像素点

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

目前市场上手机屏幕分辨率 还是以1920*1080像素为主
android屏幕分辨率、密度、尺寸、px、dp等


屏幕像素密度

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

单位:dpi

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

下面举个“栗子”

一部4.95英寸、屏幕分辨率是1920*1080的手机,求屏幕像素密度
android屏幕分辨率、密度、尺寸、px、dp等

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

android屏幕分辨率、密度、尺寸、px、dp等
因为AC=1920,BC=1080,所以AB≈2203
所以像素密度 = 2203 / 4.95 ≈ 445

2.为什么我们要用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手机
android屏幕分辨率、密度、尺寸、px、dp等

B手机
android屏幕分辨率、密度、尺寸、px、dp等
如果我们图片要在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/

这是我的简书 https://www.jianshu.com/p/211cbaa5a59e