px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
来源:互联网 发布:sql if else 循环 编辑:程序博客网 时间:2024/04/23 19:35
px :是屏幕的像素点
in :英寸
mm :毫米
pt :磅,1/72 英寸
dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px
dip :等同于dp
sp :同dp相似,但还会根据用户的字体大小偏好来缩放。
建议使用sp作为文本的单位,其它用dip
针对dip和px 的关系,做以下概述:
QVGA屏density=120; QVGA(240*320)
HVGA屏density=160; HVGA(320*480)
WVGA屏density=240; WVGA(480*800)
WQVGA屏density=120 WQVGA(240*400)
density值表示每英寸有多少个显示点,与分辨率是两个概念。
不同density下屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)为例
density=120时
屏幕实际分辨率为240px*400px (两个点对应一个分辨率)
状态栏和标题栏高各19px或者25dip
横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip
竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip
density=160时
屏幕实际分辨率为320px*533px (3个点对应两个分辨率)
状态栏和标题栏高个25px或者25dip
横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip
竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip
density=240时
屏幕实际分辨率为480px*800px (一个点对于一个分辨率)
状态栏和标题栏高个38px或者25dip
横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip
竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip
apk的资源包中
当屏幕density=240时,使用hdpi 标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px
dp与px换算公式:
pixs =dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
dp与px转换的方法:
public static int dip2px(Context context, float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale +0.5f);
}
public static int px2dip(Context context, float pxValue){
final float scale = context.getResource().getDisplayMetrics().density;
return (int)(pxValue / scale +0.5f);
}
名词
解释
Px
(Pixel像素)
不同设备显示效果相同。这里的“相同”是指像素数不会变,比如指定UI长度是100px,那不管分辨率是多少UI长度都是100px。也正是因为如此才造成了UI在小分辨率设备上被放大而失真,在大分辨率上被缩小。
Screen Size
(屏幕尺寸)
一般所说的手机屏幕大小如1.6英寸、1.9英寸、2.2英寸,都是指的对角线的长度,而不是手机面积。我们可以根据勾股定理获取手机的宽和长,当然还有面积。
Resolution
(分辨率)
指手机屏幕垂直和水平方向上的像素个数。比如分辨率是480*320,则指设备垂直方向有480个像素点,水平方向有320个像素点。
Dpi
(dots per inch
像素密度)
指每英寸中的像素数。如160dpi指手机水平或垂直方向上每英寸距离有160个像素点。假定设备分辨率为320*240,屏幕长2英寸宽1.5英寸,dpi=320/2=240/1.5=160
注意:该值对应于DisplayMetrics类中属性densityDpi的值
Density
(密度)
指每平方英寸中的像素数。
Density=Resolution/Screen size
注意:在DisplayMetrics类中属性density的值为dpi/160,可用于px与dip的互相转换
Dip
(Device-independent pixel,设备独立像素)
同dp,可作长度单位,不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。dip和具体像素值的对应公式是dip值 =设备密度/160* pixel值,可以看出在dpi(像素密度)为160dpi的设备上1px=1dip
Sp
(ScaledPixels
放大像素)
主要用于字体显示(best for textsize)。根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知 Android 默认使用 sp 作为字号单位。
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
- Android 边用边学 之 px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别 屏幕密度
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
- Android长度单位px,in,mm,pt,dp,dip,sp换算公式以及区别
- Android长度单位px,in,mm,pt,dp,dip,sp换算公式以及区别
- Android长度单位px,in,mm,pt,dp,dip,sp换算公式以及区别
- 【转】Android长度单位px,in,mm,pt,dp,dip,sp换算公式以及区别
- px,in,mm,pt,dp,dip,sp 之间关系及换算总结
- px in mm pt dp dip sp区别
- px, in, mm, pt, dp, dip, sp
- px,in,mm,pt,dp,dip,sp
- android开发中px,dip,dp,sp,dpi的区别,以及dp与px换算公式.
- Android的计量单位px,in,mm,pt,dp,dip,sp
- Android的计量单位px,in,mm,pt,dp,dip,sp
- Android的计量单位px,in,mm,pt,dp,dip,sp
- 显存与纹理内存详解
- 最后的入侵
- linux下提示bash:command not found
- QT 开发实战
- 数据备份形式主要方式解读大全
- px,in,mm,pt,dp,dip,sp 之间的换算公式以及区别
- 上传图片并创建相应文件夹
- LayoutInflater的使用
- Java获得当前类所在路径
- windows 2003 IIS 服务器设置 301重定向 出现 eurl.axd
- C++引用本质
- android ndk 入门之打印log信息
- Win32 and COM for Metro style apps (data)
- [C++] 应该如何应对OOM?