Android中的长度单位详解

in(英寸)长度单位(基本用不到)
mm(毫米)长度单位(基本用不到)
pt(point磅)1/72英寸,标准的长度单位(基本用不到)

 

px(pixel像素)指的是屏幕上的点
dp(与密度无关的像素)一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dp=1px
dip(device independent pixels设备独立像素) 不同设备有不同的显示效果,这个和设备硬件有关。
sp(scaled pixels放大像素)与dp类似,主要用于字体显示(best for textsize)

 

dip和px的区别及其转换
区别:
在DisplayMetrics.densityDpi=160的设备上,DisplayMetrics.density是等于1.0的(通过查看DisplayMetrics的SDK源代码得知),此时1dip=1px。但是换到其他不同density的设备上,dip和px的大小就不一样了,px在任何密度的设备上几何长度都是一样的,而dip会根据设备密度变化的。所以在开发中布局时尽量使用dip而少使用px。dpi表示每英寸像素数,读者可以参考这篇文章:
(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的区别以及联系
转换:
dip和px之间的转换很简单,下面是dip和px的工具类。

[java]  view plain copy
  1. /** 
  2.  * 密度常量设置,提供dip转换为px的方法 
  3.  *  
  4.  * @author zuolongsnail 
  5.  *  
  6.  */  
  7. public final class DensityConst {  
  8.     /** 默认密度 */  
  9.     public static float density = 1.0f;  
  10.     /** 默认每英寸像素数 */  
  11.     public static int densityDpi = 160;  
  12.   
  13.     /** 
  14.      * 初始化与密度相关的所有变量值 
  15.      *  
  16.      * @param activity 
  17.      */  
  18.     public static void initDensity(Activity activity) {  
  19.         DisplayMetrics dm = new DisplayMetrics();  
  20.         activity.getWindowManager().getDefaultDisplay().getMetrics(dm);  
  21.         density = dm.density;  
  22.         densityDpi = dm.densityDpi;  
  23.     }  
  24.   
  25.     /** 
  26.      * dip转化为像素 
  27.      *  
  28.      * @param dip 
  29.      * @return 
  30.      */  
  31.     public static int getPx(int dip) {  
  32.         return (int) (dip * density);  
  33.         // return (int)(dip*(densityDpi/160));  
  34.   
  35.     }  
  36.   
  37.     /** 
  38.      * 像素转化为dip 
  39.      *  
  40.      * @param px 
  41.      * @return 
  42.      */  
  43.     public static int getDip(int px) {  
  44.         return (int) (px / density);  
  45.         // return (int)((px*160)/densityDpi);  
  46.     }  
  47. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值