android UI设计图片和文字尺寸px对应dp、sp值换算

屏幕尺寸:指屏幕的对角线长度,单位是英寸,1英寸等于2.54厘米,常见尺寸有2.4,2.8,3.5,3.7,4.2,5.0,5.5,6.0等。

屏幕分辨率:指在纵横向上的像素点数,单位是px,1px为一个像素点,一般格式为纵向像素*横向像素,如1960*1080。

屏幕像素密度:相同尺寸情况下,分辨率越高,屏幕越清晰,即屏幕像素密度越大。屏幕像素密度指每英寸上面的像素点个数,单位是dpi,是“dot per inch”的缩写,计算方式如下图:

密度无关像素:单位dip或dp,是Density Independent Pixels的缩写,Android规定,在屏幕像素密度为160dpi的情况下,1dp=1px。而在像素密度为320dpi的情况下,1dp=2px,以此类推。计算公式:1dp=(像素密度/160dpi)*1px。

sp:全称cale-independent pixels,与dp类似,用于设置字体大小。

设置布局时,使用dp和sp(字体),不要直接使用px,这样才能保证屏幕适配。

dpi的范围划分

(表中像素密度范围后包前不包,如120~160为120<x<=160):及dp/sp/px换算比率(rate=像素密度/160dpi,dp=px/rate)

名称ldpimdpihdpixhdpixxhdpixxxhdpi
像素密度0~120dpi120dpi~160dpi160dpi~240dpi240dpi~320dpi320dpi~480dpi480dpi~640dpi

比率rate

0.750.75~11~1.51.5~22~33~4
代表性分辨率240*320320*480480*800720*12801080*1920 

 

 

 

 

通常我们都会用上面的代表性分辨率来计算rate,而从来没指定说是屏幕是几英寸的.比如很多文章里讲320*480的屏幕是160dpi,很容易就让人误解所有480*320的屏幕的像素密度都是160dpi,其实很不严谨,他们之间还有一个变量:屏幕尺寸,下面我们就来来计算一下这些经常拿来举例子的屏幕分辨率的屏幕是几英寸的情况下才是对应160dpi、320dpi等等。

屏幕尺寸=√(屏幕宽px)²+屏幕高px²/dpi,带入值计算得出:

480*320分辨率的屏幕,160dpi时的屏幕尺寸为√320²+480²/160=3.6英寸;

720*1280分辨率的屏幕,320dpi时的屏幕尺寸为4.589英寸≈4.6寸也就是市场上常用的4.5寸;

1080*1920分辨率的屏幕,480dpi时的屏幕尺寸为4.589英寸≈4.6寸也就是市场上常用的4.5寸;

使用场景

正是因为dpi值其代表的特性,所以android项目的资源文件下存在以下目录:

drawable-ldpi    ( 当dpi为120时,使用此目录下的资源)
drawable-mdpi    ( 当dpi为160时,使用此目录下的资源)
drawable-hdpi    ( 当dpi为240时,使用此目录下的资源) 
drawable-xhdpi   ( 当dpi为320时,使用此目录下的资源)
drawable-xxhdpi  ( 当dpi为480时,使用此目录下的资源)
Android正是根据设备DPI值得不同,选择清晰度不同的资源使用,完成屏幕的适配。

Android的图标尺寸 

像素密度启动图标欢迎页背景图操作栏图标上下文图标系统通知图标(白色)最细笔画

mdpi

48×48 px320*48032×32 px16×16 px24×24 px不小于2 px

hdpi

72×72 px480*80048×48 px24×24 px36×36 px不小于3 px

xhdpi

96×96 dp720*128072×72 dp32×32 dp48×48dp不小于4 dp

xxhdpi

144×144 px1080*192096×96 px48×48 px72×72 px不小于6 px

UI设计举例

比如UI设计师给的图是以750px的屏幕宽度作为标准的,例如一张图片的尺寸是100px*100px,或者字体大小为100px,则换算成android的dp和sp为(以xxhdpi屏为常用适配机型 rate = 320/160~480/160=2~3):(1080/750)*100/rate=144/2~144/3=48dp~72dp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值