Android屏幕适配(一)dp、px、dpi、sp的理解

本文介绍了Android开发中关于屏幕适配的重要概念,包括dp、px、dpi和sp的深入理解。通过实例计算,如3.7英寸WVGA(800*480)分辨率设备的DPI为252,探讨了这些单位在实际应用中的转换和使用。

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

在Android开发过程中,屏幕适配往往是开发人员比较忽视的一个知识点。往往这些被忽视的东西在遇到问题的时候会耗费你比较多的时间。所以对于初级程序员来说理解掌握适配的一些基本知识是必须的。(大牛请移步)
一、理解dp,px,dpi,sp的概念
px:  
px其实就是像素单位,比如我们通常说的手机分辨列表800*400都是px的单位。
dpi:
一英寸所占的像素点的个数,有一些厂家会把160dpi改成1.2

Google规定的见下表:


一英寸有多少个点儿? 我们用来density(密度)来分辨
ldpi 120dpi 0.75
mdpi 160dpi 1
hdpi 240dpi 1.5
xhdpi 320dpi 2
dpi的计算:

比如:计算WVGA(800*480)分辨率,3.7英寸

DPI=
=933/3.7=252

dp/dip:
device independent pixels(设备独立像素) ,Android开发中通用的与px无关的单位。
sp:
放大的像素,与dp,px没有直接的关系,用于字体。

二、px与dp的关系
dp=px*160/dpi     屏幕1英寸的点数=160dpi(也就是密度为1)的时候,1dp=1px。

实际开发过程中,我们获取到height、width都是px单位的,往往就需要我们转化成dp去动态设置,
那怎么转化呢?
DisplayMetrics 对象会分装手机的宽、高、密度、缩放密度等属性,怎么获取DisplayMetrics 呢?
context.getResources().getDisplayMetrics();

px转dp
dp = pxValue / density+ 0.5f
dp转px
px = dipValue * density+ 0.5f
px转sp
sp=pxValue / scaledDensity+ 0.5f
sp转px
px=spValue *scaledDensity+ 0.5f

注:如果AndroidManifest配置文件中未配置 <uses-sdk / >那么DisplayMetrics 中的属性获取的值都是默认的值,而不是
手机正确的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值