android开发中用到的px、dp、sp
先介绍一下这几个单位:
px : pixels(像素),相应屏幕上的实际像素点。
dip :device independent pixels,与密度无关的像素,基于屏幕密度的抽象单位。
在每英寸160点的显示器上。
1dp = 1px ,即1 :1关系。(dp 就是 dip)
sp : scaled pixels(放大像素).与密度和字体缩放度无关的像素。 主要用于字体显示best for textsize。
因为android设备屏幕杂乱,各种花样宽度和高度多的不行,加上各种山寨。
当开发出一套layout后。痛苦的事情来了,屏幕适配。
怎样保证layout在不同分辨率的屏幕下都能正常显示呢?以下我们来简单的分析一下android中一些经常使用的单位。
px(像素)是UI设计师在PS中切图时使用的单位,手机屏幕中也相同有该显示单位。
dp是android中开发layout时使用的尺寸单位。
sp是开发layout时关于字体的字号单位,在设置字体单位为sp时,字体可随屏幕尺寸而自己主动拉伸适应。
Android支持五种不同的dpi模式:ldpi、 mdpi、 hdpi、 xhdpi、 xxhdpi
一般地,手机分辨率与所执行的dpi模式是匹配的。也就是会依据屏幕的尺寸载入Res下不同的dpi目录。
比如 HVGA(320x480像素)的手机屏幕一般在3.5英寸左右。执行在mdpi模式下(也有奇葩机子例外)
(这个是ROM控制的。app不能改变)。
当执行在mdpi下时,1dp=1px:也就是说设计师在PS里定义一个item高48px。开发时就会定义该item高48dp;Photoshop中14px大的字体,开发时会定义为14sp。
对于一部WVGA(480x800)手机,通常是执行在hdpi模式下。
当执行在hdpi模式下时,
1dp=1.5px:也就是说设计师在PS里定义一个item高72px。开发时就会定义该item高 48dp;
Photoshop中21px大的字体。开发会定义为14sp。
所以,当你的app须要适配多个dpi模式的时候(比如同一时候适配mdpi与hdpi),若你在WVGA下做设计(或者更高),你须要将各数值都为3的倍数,
并在切图标注时将全部的数字( /3*2) 换算成dp。这样开发的同一套layout就能用在两个不同的dpi模式下,而不是写两套layout。
当中的比例:
mdpi与hdpi是2:3的关系
mdpi与 xhdpi是1:2的关系
ldpi与mdpi是3:4的关系
比方我的机子红米,720 * 1280 的屏幕尺寸,就是执行在xhdpi下的。
一种例外。有些比較山寨的Pad有可能是7英寸屏幕,分辨率为WVGA(480*800)执行在mdpi下。
android开发中用到的px、dp、sp的更多相关文章
- Android屏幕尺寸与度量单位(px,dp,sp)简介
MarkdownPad Document *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...
- px,dp,sp以及像素密度
px px(pixel): 像素,是指在由一个数字序列表示的图像中的一个最小单位.在Android中,无论屏幕密度多少,一个像素单位对应一个屏幕像素单位,不会根据屏幕密度自动缩放,因此一般不推荐使用p ...
- Android开发中用到的框架、库介绍
Android开发中用到的框架介绍,主要记录一些比较生僻的不常用的框架,不断更新中...... 网路资源:http://www.kuqin.com/shuoit/20140907/341967.htm ...
- px,dp sp是像素、尺寸、尺寸
px:即像素,1px代表屏幕上一个物理的像素点:px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小可能不同,如下图所示(图片来自android developer guide, ...
- android px,dp,sp大小转换工具
package com.voole.playerlib.util; import android.content.Context; /** * Android大小单位转换工具类<br/> ...
- android px dp sp
http://www.zcool.com.cn/article/ZMTUxODQw.html
- Android开发中用友盟做分享的一些坑
仅限于用5.1.4版本的 按照友盟分享的API在自己的代码中修改: 1.微信分享需要打包APK文件,数字签名与微信开发申请的要一致 2.此name中属性不能修改 value为友盟的申请的appkey ...
- Android开发中用到的第三方框架汇总
最近上网搜索了一些框架资料,整理了以下常用框架,希望在项目中有所帮助. 1.网络请求框架 android-async-http 该网络框架的介绍文章地址:http://www.cnblogs.com/ ...
- px,dp,sp单位转换工具类
在layout中使用dp 在代码中getWidth系列得到的是px 设置字体大小时使用的是sp /** * Android大小单位转换工具类 */ public class PxDpSpUtil { ...
随机推荐
- Linux下通用线程池的创建与使用
线程池:简单地说,线程池 就是预先创建好一批线程,方便.快速地处理收到的业务.比起传统的到来一个任务,即时创建一个线程来处理,节省了线程的创建和回收的开销,响应更快,效率更高. 在linux中,使用的 ...
- 【钉钉PC】PC端钉钉清除缓存
最近被钉钉的PC端坑的要死要死的,一个缓存问题弄了我一天时间,去你大爷的,放在这里防止其他的人被坑. 1.右键点击微应用,选择devtools 2.展开的页面,就像web端的F12,勾选network ...
- 让 linux centos 文件夹地址栏 位置栏显示出来的方法
今天又拿起心爱的 linux ,发现多日不用又忘记了不少知识了 , 发现忘记的速度真是惊人的! 设置方法: 编辑-> 首选项-> 勾选 总是在浏览器窗口中打开, 如图:
- 使用 Eclipse 远程调试 Java 应用程序
Eclipse 中的远程调试特性 Eclipse 是一个图形化 Java 调试器前端.JDI 在 org.eclipse.jdt.debug 包中实现.本文不详细讨论 JDI 实现.参见 参考资料 获 ...
- HDUOJ---携程员工运动会场地问题
携程员工运动会场地问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- SYS_R12 MOAC多组织底层技术实现技术分析(Oracle VPD) (案例)
2014-05-30 Created By BaoXinjian
- 【转】其他人的BUG
在软件行业,经常看到有的公司管理让一个人修补另一个人代码里的BUG.有时候有人写了一段代码,扔出来不管了,然后公司管理让其他工程师来修复它.我想告诉你们,这种方法会很失败. 首先,让一个人修复另一个人 ...
- Walkthrough: Writing a Visualizer in C#
https://msdn.microsoft.com/en-us/library/ms164759.aspx
- Python2 字典 cmp() 函数
描述 Python 字典的 cmp() 函数用于比较两个字典元素,如果 dict1 < dict2 返回 -1, 如果 dict1 == dict2 返回 0, 如果 dict1 > di ...
- 更改Android应用程序的图标
对于android应用程序的开发.默认的图标是一个小机器人,图片名称为ic_launcher.png. 可是,大多数开发人员是会将这个图标在开发过程中改为自己设计的icon. 把apk图标更改为自己设 ...