2021年最全Android屏幕适配的度量单位px dp(dip) ppi dp
2023-04-29 17:09:07发布 浏览471次 信息编号:51503
友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。
2021年最全Android屏幕适配的度量单位px dp(dip) ppi dp
0 前言
李开心目前正在学习屏幕适配相关的知识点,其中涉及到很多屏幕适配相关的概念和度量单位,但是李开心掌握的相关知识并不扎实,所以决定就这方面写这两篇文章给对知识点做一个总结,屏幕适配系列有两篇文章:
《2021年最全屏适配的度量单位px dp(dip) ppi dpi sp pt的区别》 《2021年最详尽的屏幕适配解决方案汇总》 1 屏幕适配相关概念 1.1 屏幕尺寸(Size) 1.1.1 设备屏幕尺寸
设备的屏幕尺寸是设备屏幕的对角线长度,以英寸为单位,其中 1 英寸等于 2.54 厘米。 例如,常见的设备屏幕尺寸为 3.5"、4.0"、5.5" 等。
1.1.2 应用屏幕尺寸
应用的屏幕尺寸是系统为应用提供的可见空间。 应用程序的屏幕尺寸不是设备的屏幕尺寸,而是屏幕方向、系统装饰(如标题栏和导航栏)和窗口配置更改(如用户启用多窗口模式时)的组合。
多窗口模式:.0及以上设备支持分屏模式,.0及以上大屏设备支持自由窗口模式,.0及以上设备支持画中画模式。
例如,以设备屏幕尺寸为*的Redmi设备为例,我们以无导航栏全屏模式、有导航栏全屏模式、分屏模式、自由窗口模式打开开发助手APP检测屏幕属性。 截图如下:
我们可以发现,这四种情况检测到的屏幕分辨率都是*,也就是我们所说的设备屏幕尺寸; 但在四种情况下检测到的可用屏幕分辨率不同。 图中蓝色框圈内的区域就是可用屏幕分辨率所描述的区域,也就是我们所说的应用程序的屏幕尺寸。
1.2 屏幕分辨率 ( )
屏幕分辨率是指水平和垂直方向的像素数。 单位为px(像素)。 1px 等于 1 个像素。 一般设备的屏幕分辨率用“垂直像素*水平像素”表示,如*.
1.3 测量单位px、dp(倾角)、ppi、dpi、sp、pt 1.3.1 像素px(像素)
Pixel,1px代表物理屏幕上的一个像素。 由于设备分辨率复杂,厂商太多,实际开发过程中不推荐使用px。 比如一张宽高为100px的图片,在不同分辨率的设备上可能显示的尺寸不一致,如下图(图片来自):
1.3.2 密度无关像素 dp/dip(- )
密度无关像素是基于屏幕物理密度的测量单位,其中 1dp 在大屏幕上约等于 1px。 当在更高密度的屏幕上运行时,用于绘制 1dp 的像素数会按适合屏幕 dpi 的因子放大,例如 1dp 在高密度屏幕上大致等于 2px。 在低密度屏幕上,1dp 具有较少的像素。
也就是说,dp与px的比值与屏幕的物理密度呈正相关,但不一定成正比。 度量单位 dp 可以针对不同的屏幕密度适当地调整布局中 UI 组件的大小。 换句话说,它提供了跨设备的 UI 元素的真实大小的一致性。
为什么说dp与px的比值与屏幕的物理密度成正比,而不是成正比呢?
这主要是因为开发者可以在代码中指定浮点数的dp或px,但是在设备屏幕上根据对应的dp或px显示内容时,需要取整,因为设备屏幕是由像素组成的, 所以他们的关系是正相关的。
比如一个宽高是11dp*11dp,1.0的设备屏幕实际显示的像素是11px*11px,但是1.5的设备屏幕实际显示的像素是17px*17px,而不是16.5px *16.5px . 因为一个1px*1px的像素只能显示或者不显示,所以系统会将16.5px*16.5px取整为17px*17px。
官方文档《 Pixel 》对屏幕适配有一个看法:第一个必须避免的陷阱是使用pixel px来定义距离或大小。 使用像素来定义大小是有问题的,因为不同的屏幕具有不同的像素密度,因此相同数量的像素在不同的设备上可能对应不同的物理尺寸。
比如底部有两部4.0英寸的手机。 左边的手机分辨率很低,320px*180px,右边的是960px*540px。 如果显示字母a的图片的宽高设置为100px,那么左边手机显示字母a的图片就很大,而右边手机显示字母a的图片就很小.
只有将字母a图片的宽高设置为100dp才会出现如下效果,即字母a图片的实际物理宽高在两台不同分辨率的手机上看起来几乎一样,而不是一大一小。
要使 UI 组件在不同密度的屏幕上以相同大小显示,您必须使用与密度无关的像素 (dp) 作为度量单位来设计界面。 dp是一个虚拟的像素单位,1dp在底密度屏上约等于1px。 对于彼此的密度,这个值被转换成相应的实际像素数。
1.3.3 像素密度ppi(每英寸)
像素密度是表示印刷图像或显示器单位面积像素数的指标。 一般用于测量电脑显示器、电视机、手机屏幕的精细度。 例如,手机销售商一般会标注所售手机的ppi。 比如淘宝商城小米手机logo的ppi是395,一般情况下屏幕的ppi越高,屏幕显示的内容越细腻真实,ppi的计算公式如下:
以分辨率为1280*720、屏幕对角线为4.3英寸的设备为例:ppi = √(12802+7202) / 4.3 = 341.5359...≈342。
1.3.4 屏幕密度 dpi(dots per inch)
屏幕密度是位图数字图像中使用的测量单位,表示每英寸长度的采样点数或可显示点数。 为简单起见,所有屏幕密度都分为六个通用密度,如下表所示:
类屏幕密度 dpi 密度无关像素 dp 的比例因子
低密度脂蛋白
~
0.75
mdpi
~
1.0
高清像素
~
1.5
xhdpi
~
2.0
~
3.0
~
4.0
1.3.4.1 密度无关像素 dp 的比例因子
在“”中,屏幕密度dpi的比例因子有如下解释:
是密度无关像素 dp 的比例因子,反映在 . .util 包中的字段。 在将dp单位转换为px单位时,该字段是必须使用的缩放因子,1表示屏幕,1.5表示屏幕,以此类推。 使用 dp 和 px 这两个测量单位可以很容易地转换:
px = dp * = dp * (dpi / 160)
假设在一个应用程序中,系统不会识别滚动或滑动手势,直到用户的手指移动至少 16px。 在基准屏幕上,用户必须移动 16 / 160 dpi(等于 1/10 英寸或 2.5 毫米)才能识别手势。 在配备高密度显示屏 ( ) 的设备上,用户的手指必须至少移动 16 / 240 dpi淘宝图片空间适配手机,即 1/15 英寸(1.7 毫米)。 这个距离要短得多,因此用户认为应用程序在该设备上的响应速度更快。
要解决此问题,手势阈值必须在代码中以 dp 表示,然后再转换为实际像素。 例如:
//以dp为度量单位的手势阈值
private static final float GESTURE_THRESHOLD_DP = 16.0f;
//获得当前设备的密度无关像素dp的缩放因子density
final float density = getResources().getDisplayMetrics().density;
//基于density将dp转化为当前设备适应的px,
mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * density + 0.5f)
//使用以px为度量单位的mGestureThreshold变量值作为当前APP的手势阈值
这 。 字段根据当前像素密度指定必须用于将 dp 单位转换为像素的比例因子。 在中密度屏幕上,. 等于 1.0; 在高密度屏幕上,它等于 1.5; 在超高密度屏幕上,它等于 2.0; 在低密度屏幕上,它等于 0.75。 这个数字是一个系数,可以乘以dp单位得到当前屏幕的实际像素数。
1.3.4.2 ppi和dpi的区别
dpi(dots per inch),ppi(per inch),前者高亮dot(物理像素),后者高亮pixel(像素),dot是物理像素,pixel不一定,一个像素可能由很多物理点组成.
PPI 描述数字图像的像素分辨率,而 DPI 描述打印图像上的墨点数。 尽管 PPI 主要指的是屏幕显示,但它也会影响设计的打印尺寸,从而影响输出质量。 虽然 DPI 与数字化无关,但它主要涉及打印。
为了比较,dpi 等同于 ppi。 详情请参考《PPI vs. DPI:到底是什么?》一文。
1.3.5 尺度无关像素sp(Scale-Pixel)
定义文字大小时,应以可缩放像素sp为单位。 sp与dp类似,唯一不同的是:系统允许用户自定义文字大小(small、、large、super large等),当文字大小为“”时,1sp=1dp,而当文字大小为“大”或“特大”时,1sp>1dp。
1.3.6 点 pt(point)
pt在两种环境下有两种不同的含义:在中国,pt用于指定电子图像的尺寸,并将其映射到打印设备上; 而在iOS应用开发中,pt用于指定电子图片的尺寸,并将其映射到iOS设备上。
但是在以上两种环境中,pt都是一个逻辑单元,用来隔离输出设备的精度差异,保证输出结果的物理尺寸不会大也不会小。
1.3.6.1 iOS设备中的点pt(point)
在iOS应用开发中,pt用于指定电子图片的尺寸,并将其映射到iOS设备上。 在 iOS 设备中,1pt 映射为 1px,1inch(英尺)等于 163pt。 对于其他ppi不同的iOS设备,1pt可能会映射到2px、3px等像素。 详情请参考下表:
1.3.6.2 中的点(点)
在 中,pt 用于指定电子图像的尺寸并映射到打印设备。 规定当ppi为72时淘宝图片空间适配手机,1pt映射为1px。 1inch 等于 72pt。
2 2021年最详尽的屏幕适配方案汇总
请阅读李开心写的《2021年最详尽的屏幕适配方案汇总》一文。
本文参考资料:
开发人员文档指南应用程序资源概述
开发人员-文档-指南-设备兼容性-设备兼容性概述
【屏幕适配】px、dp、ppi、dpi、sp解析
iOS开发中使用的单位pt和ps中的pt是同一个概念吗? 我个人不这么认为。 希望高手能解答一下...?
腾讯何嘉诚-屏幕适配:最全面的解决方案
张宏阳-屏幕适配方案
提醒:请联系我时一定说明是从星空网上看到的!