Android 屏幕适配攻略(三)单位dp与sp

Android 屏幕适配攻略(三)单位dp与sp

1 一般手机默认使用情况下


在安卓中,一般情况下,也就是正常使用情况下

屏幕密度对应的标签对应的像素sp
120dipldpi1dp= 0.75px1sp= 0.75px
160dipmdpi1dp= 1px1sp= 1px
240diphdpi1dp= 1.5px1sp= 1.5px
320dipxhdpi1dp= 2px1sp= 2x
480dipxxhdpi1dp= 3px1sp= 3px
640dipxxxhdpi1dp= 4px1sp= 4px

通过计算,假如计算出来的屏幕密度为 150,安卓系统会进行判断,150 在 120dip 与 160dip 之间,那么系统会使用 160dip为 基数来进行尺寸的计算

也就是说 例如我们在布局文件中设置了一个控件的宽度为10dp或者10sp,那么
在 以160 dip为基数计算的屏幕上显示 的控件的实际宽度为10px,
在 以240dip dip为基数计算的屏幕上显示 的控件的实际宽度为15px,
在 以320dip dip为基数计算的屏幕上显示 的控件的实际宽度为20px,
在 以480dip dip为基数计算的屏幕上显示 的控件的实际宽度为30px


2 当用户在设置中设置了显示字体大小为 微小或者小(每款手机的设置方式不一样)

屏幕密度对应的标签对应的像素sp
120dipldpi1dp= 0.75px1sp< 0.75px
160dipmdpi1dp= 1px1sp< 1px
240diphdpi1dp= 1.5px1sp< 1.5px
320dipxhdpi1dp= 2px1sp< 2x
480dipxxhdpi1dp= 3px1sp< 3px
640dipxxxhdpi1dp= 4px1sp< 4px

例如我们在布局文件中设置了一个控件的宽度为10dp时,那么
在 以160 dip为基数计算的屏幕上显示 的控件的实际宽度为10px,
在 以240dip dip为基数计算的屏幕上显示 的控件的实际宽度为15px,
在 以320dip dip为基数计算的屏幕上显示 的控件的实际宽度为20px,
在 以480dip dip为基数计算的屏幕上显示 的控件的实际宽度为30px

而我们在布局文件中设置了一个控件的宽度为10sp时,那么
在 以160 dip为基数计算的屏幕上显示 的控件的实际宽度小于10px,
在 以240dip dip为基数计算的屏幕上显示 的控件的实际宽度小于15px,
在 以320dip dip为基数计算的屏幕上显示 的控件的实际宽度小于20px,
在 以480dip dip为基数计算的屏幕上显示 的控件的实际宽度小于30px


3 当用户在设置中设置了显示字体大小为 大或者特大(每款手机的设置方式不一样)

屏幕密度对应的标签对应的像素sp
120dipldpi1dp= 0.75px1sp > 0.75px
160dipmdpi1dp= 1px1sp > 1px
240diphdpi1dp= 1.5px1sp > 1.5px
320dipxhdpi1dp= 2px1sp > 2x
480dipxxhdpi1dp= 3px1sp > 3px
640dipxxxhdpi1dp= 4px1sp > 4px

此时我们在布局文件中设置了一个控件的宽度为10dp时,那么
在 以160 dip为基数计算的屏幕上显示 的控件的实际宽度为10px,
在 以240dip dip为基数计算的屏幕上显示 的控件的实际宽度为15px,
在 以320dip dip为基数计算的屏幕上显示 的控件的实际宽度为20px,
在 以480dip dip为基数计算的屏幕上显示 的控件的实际宽度为30px

而我们在布局文件中设置了一个控件的宽度为10sp时,那么
在 以160 dip为基数计算的屏幕上显示 的控件的实际宽度大于10px,
在 以240dip dip为基数计算的屏幕上显示 的控件的实际宽度大于15px,
在 以320dip dip为基数计算的屏幕上显示 的控件的实际宽度大于20px,
在 以480dip dip为基数计算的屏幕上显示 的控件的实际宽度大于30px


4 综述

所以我们在开发中一般布局文件中,为了调整适配,控件的大小与距离使用 dp做为单位,这样的话,我们发开发出来的页面不会因为用户的个人设置而导致错乱,在设置字体大小的时候使用sp,这样的会也不会影响用户个人的一些设置,当然有些时候还会出现影响的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早起的年轻人

创作源于分享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值