您的位置:首页 > 移动开发 > Android开发

Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释

2012-04-12 20:25 302 查看
px(Pixels ,像素):对应屏幕上的实际像素点。

in(Inches ,英寸):屏幕物理长度单位。

mm(Millimeters ,毫米):屏幕物理长度单位。

pt(Points ,磅):屏幕物理长度单位,1/72英寸。

dp(与密度无关的像素):逻辑长度单位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。随着密度变化,对应的像素数量也变化,但并没有直接的变化比例。

dip:与dp相同,多用于Google示例中。

sp(与密度和字体缩放度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
一直对px、dip、sp、dp这几个单位概念很模糊。网上查了下,基本理论上是清楚了。

1.px (pixels)(像素):屏幕上的点 ,与密度相关。密度大了,单位面积上的px会比较多。

2.dip或dp(与密度无关的像素)。这个和设备硬件有关,为了支持WVGA、HVGA和QVGA 5进制空间推荐使用这个。一种基于屏幕密度的抽象单位。设置一些view的宽高可以用这个,一般情况下,在不同分辨率,都不会有缩放的感觉。如果用px的话,320px占满HVGA的宽度,到WVGA上就只能占一半不到的屏幕了,那一定不是你想要的。

3.sp(与刻度无关的像素)放大像素– 主要处理字体的大小。

屏幕大小和密度对照表 :



下面是在manifest中设置app在不同分辨率时,是否支持多密度的方法。

<manifest xmlns:android="http://schemas.android.com/apk/res/android">

...

<supports-screens

android:smallScreens="true"

android:normalScreens="true"

android:largeScreens="true"

android:xlargeScreens="true"

android:anyDensity="true" />

</manifest>



转换:

dip和px之间的转换很简单,下面是dip和px的工具类。
/**

* 密度常量设置,提供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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐