Android 中 px、dp、dip、sp详解

本文详细介绍了Android中px、dp、dip和sp的区别与应用场景,针对屏幕分辨率和像素密度,解释了如何使用这些单位进行尺寸适配,以解决Android设备的碎片化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

首先要说的是,Android的碎片化的问题非常严重。因为 Android 厂商非常多,设备非常多,产生了各种各样的分辨率。为了解决碎片化的问题,Android 开发文档中定义了 dp,sp 等新的单位

二、屏幕的基本知识

1.mm:millmeters 毫米,长度单位

2.pt:points 一个标准单位,大小为一英寸屏幕大小的1/72

3.px : pixel ,一个像素点 ,如手机分辨率320*480表示宽有320像素,高有480像素。

4.in:inches 英寸,长度单位,屏幕物理尺寸的基本单位(注意是长度单位)
1 英寸 = 2.54 厘米。屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位。比如某某手机为“5寸大屏手机”,就是指对角线的尺寸,5寸×2.54厘米/寸=12.7厘米。

5.dpi:dots per inch,即像素密度,每英寸屏幕的像素点
计算公式 dpi = ppi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 = 对角线像素数/屏幕对角线英寸数
假如我们知道一部手机的分辨率是1080×1920,屏幕大小是5英寸,根据公式计算结果是440dpi。

6.dp=dip(Density-independent pixels),基于屏幕物理分辨率一个抽象的单位,用于说明与密度无关的尺寸和位置。

       px = dp*ppi/160
       dp = px*160/ppi

从公式可以看出,公式的由来是已160dpi的屏幕为基准,此时该屏幕1dp=1px。如果320dpi的屏幕上,公式推导可得1dp = 2px。
dp更类似一个物理尺寸,比如一张宽和高均为100dp的图片在320×480和480×800的手机上“看起来”一样大。而实际上,它们的像素值并不一样。dp正是这样一个尺寸,不管这个屏幕的密度是多少,屏幕上相同dp大小的元素看起来始终差不多大。

7.sp :Scale-independent Pixels - 和dp单位很像,不过sp可以通过用户设置的字体大小而缩放. 为了能够自适应屏幕密度和用户的设置,建议设置字体大小时候用sp.当安卓系统字号设为“普通”时,sp=dp.

三、屏幕分辨率

android 工程中资源文件中根据不同的分辨率 分为:
这里写图片描述
可以把对应的资源刚在不同的文件夹下面,这样就能够更好的适配不同分辨率的手机
dip (dp): device independent pixel。dp (dip)是最常用也是最难理解的尺寸单位。与像素密度密切相关。Android系统定义了四种像素密度:
这里写图片描述
其中 density 表示对应的dp到px的系数,这个系数乘以dp长度就是像素数。例如界面上有一个长度为“80dp”的图片,那么它在240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。如果你拿这两部手机放在一起对比,会发现这个图片的物理尺寸“差不多”,这就是使用dp作为单位的效果。

这里写图片描述

sp: Scale-independent Pixel,即与缩放无关的抽象像素。sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时,1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。

参考文章:
http://www.jianshu.com/p/5b7c01e579ff
http://azenhuang.github.io/2015/07/27/%E8%AF%A6%E8%A7%A3Android%E5%BC%80%E5%8F%91%E4%B8%ADdp%20dip%20sp%20px%20dpi%20ppi%20%E5%8C%BA%E5%88%AB%E5%92%8C%E8%BD%AC%E6%8D%A2/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值