Android中的长度单位详解
2013-04-25 16:07
204 查看
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
plaincopy
/**
* 密度常量设置,提供dip转换为px的方法
*
* @author zuolongsnail
*
*/
public final class DensityConst {
/** 默认密度 */
public static float density = 1.0f;
/** 默认每英寸像素数 */
public static int densityDpi = 160;
/**
* 初始化与密度相关的所有变量值
*
* @param activity
*/
public static void initDensity(Activity activity) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density;
densityDpi = dm.densityDpi;
}
/**
* dip转化为像素
*
* @param dip
* @return
*/
public static int getPx(int dip) {
return (int) (dip * density);
// return (int)(dip*(densityDpi/160));
}
/**
* 像素转化为dip
*
* @param px
* @return
*/
public static int getDip(int px) {
return (int) (px / density);
// return (int)((px*160)/densityDpi);
}
}
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
plaincopy
/**
* 密度常量设置,提供dip转换为px的方法
*
* @author zuolongsnail
*
*/
public final class DensityConst {
/** 默认密度 */
public static float density = 1.0f;
/** 默认每英寸像素数 */
public static int densityDpi = 160;
/**
* 初始化与密度相关的所有变量值
*
* @param activity
*/
public static void initDensity(Activity activity) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
density = dm.density;
densityDpi = dm.densityDpi;
}
/**
* dip转化为像素
*
* @param dip
* @return
*/
public static int getPx(int dip) {
return (int) (dip * density);
// return (int)(dip*(densityDpi/160));
}
/**
* 像素转化为dip
*
* @param px
* @return
*/
public static int getDip(int px) {
return (int) (px / density);
// return (int)((px*160)/densityDpi);
}
}
相关文章推荐
- Android长度单位详解
- android长度单位详解
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)
- Android中长度单位详解
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android中,长度单位详解(dp、sp、px、in、pt、mm)具体解释与换算(1)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android 中的长度单位详解(dp、sp、px、in、pt、mm)
- [转]Android长度单位详解
- Android 中的长度单位详解(dp、sp、px、in、pt、mm)具体解释与换算
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android中的长度单位详解(dp、sp、px、in、pt、mm)
- Android长度单位详解(dp、sp、px、in、pt、mm、dip)