Android中dp px sp概念梳理以及如何做到屏幕适配

本文介绍了Android中dp, px, sp的概念,强调dp作为长度单位用于屏幕适配,详细解释了它们之间的转换关系,并探讨了在不同density屏幕下的表现。此外,还提到了Android资源文件夹的适配策略,如drawable-ldpi, mdpi等,以及代码中处理dp和px转换的方法,如getDimension系列方法的区别。文章最后分享了一个用于屏幕适配的小工具和《Android应用安全防护和逆向分析》书籍购买链接。" 131486305,7337247,人工智能应用:重塑各行各业,"['人工智能', '信息技术', '商业', '效率提升', '创新应用']

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

               

今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI很少,刚开始做Android应用的时候,没有对dp,px,sp等概念有一个深入的了解,只知道他们之间的转化,还有写个转换工具类等。做Android已经有一年多了,现在再次开始App开发,决定没遇到一个概念,必须得弄透彻。好吧,下面进入主题吧:


首先来看一下他们的基本概念:

px   :是屏幕的像素点
dp   :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px
dip  :等同于dp
sp   :同dp相似,但还会根据用户的字体大小偏好来缩放(建议使用sp作为文本的单位,其它用dip)


通过上面的知识我们可以看到这里只要弄懂px和dp之间的关系就可以了。那么下面重点来看一下他们两之间的关系:

针对dip和px 的关系,做以下概述:

1). px (pixels)像素 :

一个像素通常被视为图像的最小的完整采样,这个用的比较多,特别是web开发,页面基本都是使用像素作为单位的.

2). dip或dp (device independent pixels):

设备独立像素 — 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA

和QVGA,都会使用dip作为长度的单位

下面来看一下手机屏幕类型和密度以及分辨率的对应关系

QVGA屏density=120         QVGA(240*320)
HVGA屏density=160         HVGA(320*480)
WVGA屏density=240        WVGA(480*800)
WQVGA屏density=120      WQVGA(240*400)


注:density值表示每英寸有多少个显示点,与分辨率是两个概念。


不同density下屏幕分辨率信息是不同的,以480dip*800dip的 WVGA(density=240)为例

1、当density=120时 

转化:转化系数=120/240

屏幕实际分辨率为240px*400px (两个点对应一个分辨率)

状态栏和标题栏高各19px或者25dip

横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip

竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip

2、当density=160时 

转化:转化系数=160/240

屏幕实际分辨率为320px*533px (3个点对应两个分辨率)

状态栏和标题栏高个25px或者25dip

横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip

竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip

3、当density=240时 

转化:转化系数=240/240

屏幕实际分辨率为480px*800px (一个点对于一个分辨率)

状态栏和标题栏高个38px或者25dip

横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip

竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip

我们一般在项目中会定义多个适配资源文件夹(values-XXX,drawable-XXX等)

drawable-ldpi:     屏幕密度为120的手机设备

drawable-mdpi:   屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px)

drawable-hdpi:    屏幕密度为240的手机设备

drawable-xhdpi:  屏幕密度为320的手机设备

drawable-xxhdpi:屏幕密度为480的手机设备

(values也是一样,当然还有一点要注意:values和values-hdpi效果是一样的,drawable和drawable-hdpi效果也是一样的,所以一般我们都会在这两个文件夹中存放的值是一样的,如果两个都有的话,适配更好)


apk的资源包中

当屏幕density=240时,使用hdpi 标签的资源

当屏幕density

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值