安卓UI基础--dp sp px解析
来源:互联网 发布:qq纯真ip数据库 编辑:程序博客网 时间:2024/06/01 16:28
一、基本概念
主要概念:
dpi:dots per inch (像素/英寸),像素密度。
一英寸有多少个像素点,常见取值 120,160,240。dip(dp):Density independent pixels ,设备无关像素。
一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位。dp是为了和sp统一对dip的简称 早期使用的是dip后来统一为dp。px:屏幕的像素点。
最基本的图形长度单位。sp:Scale-independent Pixel,与缩放无关像素。
补充概念:
分辨率: Resolution (分辨率)之的是设备屏幕横向和纵向的像素的个数。常见的手机分辨率有: QVGA(240×320像素)、HVGA(480×320像素)、WVGA(800×480像素)、720P(1280x720像素)、1080P(1920x1080像素)、2K(2560x1440像素)。
屏幕尺寸:屏幕的对角线。
屏幕比例:因为只确定了对角线长,2边长度还不一定。所以有了4:3、16:9这种,这样就可以算出屏幕边长了。
pt: point,磅。
是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用。
二、计算公式
dpi:假设分辨率为:x*y像素。屏幕尺寸为L 则
dpi=√ (x²+y²)/L
屏幕分辨率长宽平方和开方除以屏幕尺寸dp&px: px=dpi/160*dp
三、区别与联系
px: px单位不被建议使用。因为同样像素大小的图片在不同手机显示的实际大小可能不同。要用到px的情况是需要画1像素表格线或阴影线的时候,如果用其他单位画则会显得模糊。
dp:Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数(density)分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。在不同分辨率下显示的长度一样。不受分辨率影响,所以称之为设备无关像素。
sp:sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时,1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。类似我们在windows里调整字体尺寸以后的效果——窗口大小不变,只有文字大小改变。
注意:sp使用后用户调整系统字体大小可能会影响到布局。
解决方法:
1、使用dp做字体单位。
2、重写getResource()方法,可以在activity基类(app中所有的activity都应该有继承于我们自己定义的一个activity类)中加上以下代码:
@Override public Resources getResources() { Resources res = super.getResources(); Configuration config = new Configuration(); config.setToDefaults(); res.updateConfiguration(config, res.getDisplayMetrics()); return res;}
在这段代码中new出来了一个Configuration对象,并通过 setToDefaults() 方法将其设为了系统默认的配置,此方法要想生效需调用Resources的updateConfiguration (Configuration config, DisplayMetrics metrics)方法。
附录:
参考文章:
Android dpi 、 dip 、dp、sp、分辨率、屏幕尺寸、px、density 关系以及换算
Android中px、dp、dip、sp详解
两种解决修改android手机设置中字体大小后系统布局混乱的方法
- 安卓UI基础--dp sp px解析
- 浅谈安卓单位px,dp,sp
- 安卓-界面布局单位dp,sp,px之比较
- 安卓DP、PX、SP相互转化代码
- 安卓开发之px dp sp区别以及应用
- 在安卓代码中dp 和 sp 换算px
- dp与px,sp的安卓转换。
- 安卓中的单位px,dp与sp
- android ui常用 单位:dp,sp,px
- New UI-常用计量单位px,dp,sp,pt解析与转换
- New UI-常用计量单位px,dp,sp,pt解析与转换
- 基础之dp,sp跟px关系
- 安卓屏幕代码适配屏幕心得px和dp;sp和dp选择
- 安卓屏幕代码适配屏幕心得px和dp;sp和dp选择
- 关于安卓中的dp、sp、px、pt单位和字体设置
- px->sp;dp->px等
- 安卓UI图px标注适配方案:批量转化px为dp
- px dp in sp
- quick sort 的c++实现
- java和Dalvik的运行差异
- 运行时测试断言
- 就近原则
- 学习hibernate过程中,自己整理的一些数据,但不全面。
- 安卓UI基础--dp sp px解析
- .NET日期时间处理
- Tensorflow实现卷积神经网络
- NYOJ 499 迷宫(DFS)
- QJson的简单使用
- caffe for windows的python接口学习(4):训练模型
- Android系统源代码编译—[1]搭建一个构建环境
- Java——第八章(集合类)——项目案例
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建