转载请注明出处,谢谢!http://www.cnblogs.com/coding-way/p/3457878.html

Android设备种类多样,要想适配好各种屏幕,理解各种屏幕数据是必须的。首先先从DisplayMetircs类聊起,DisplayMetircs类可以很方便的获取屏幕相关的信息,使用方法如下:

DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);

下面解释下DisplayMetircs类里的属性:

widthPixels、heightPixels 这两个属性就是屏幕宽和高的绝对像素,比如:1280,800。
xdpi、ydpi dpi(density independent pixel)这两个属性是对应X轴和Y轴的,每英寸像素数,比如一个像素为240x320,大小为1.5"x2"的屏幕,其xdpi=240/1.5=160,ydpi=320/2=160。注意这个值不一定是整数。
densityDpi 这个值不是精确值,他只代表了屏幕dpi的基准,常用的取值为120、160、240、320等。这个属性对应/layout-ldpi、/layout-mdpi、/layout-hdpi等自动适配的布局文件。
density 真实dpi(对角线的像素/对角线的英寸)与基准dpi(160)的比值,比如:一个320x480,大小为1.5"x2"的屏幕,其density=240/160=1.5。这个值是给单位dip和单位px换算用的,dip=density*px,后面会详细说明。
scaledDensity  这个值与density一样, 但在运行中会根据用户设置的系统字体大小来动态调整。

了解了这些基础知识后,各种单位就好理解了:

px(pixels,像素) 顾名思义,实际的像素点数。像素的缺点很明显,Android设备的像素种类很多,如果一个控件的像素为320x320,那么在240x320的屏幕中显示将不完整,所以我们要为每一种屏幕像素配置一种大小,这显然不现实,所以google不推荐使用这个单位。
pt(point,磅) 1pt=1/72英寸,一般用作字体单位,这个同px,都是无法动态调整的单位,不推荐。
dip (DensityIndependentPixel,密度无关像素,也可写dp) 为了解决多种像素适配的问题,android引入了dip单位,这个单位的换算公式为:dip/pixels=屏幕dpi/160,而density=屏幕dpi/160,所以dip = density*pixels,也就是说,如果屏幕为240x320,1.5"x2"尺寸,则其dpi为160,density=1,那么一个dip相当与一个px;如果屏幕像素增加到480x800,尺寸不变,那么其dpi为320,density=2,则一个dip相当与两个px,这样就达到了缩放的目的。
sp (scaled pixels,缩放像素) 类似dip,同样是动态调整的,不过是依据屏幕密度density和用户设置的系统字体大小来调整的,所以sp使用于设置字体的大小。
mm(millimeters,毫米) 普通长度单位,基于屏幕的实际尺寸。
in (inches,英寸) 普通长度单位,基于屏幕的实际尺寸。

更多相关文章

  1. Android(安卓)mdpi ldpi hdpi区别(转)
  2. 从屏幕底部弹出PopupWindow
  3. android之首选项相关 Preferences(三)EditTextPreference/Ringtone
  4. [Android]View响应屏幕触摸事件
  5. Android(安卓)ApiDemos示例解析(73):Graphics->Points
  6. android 自定义ProgressBar 文字跟随进度效果
  7. android 单位测试
  8. Android中获取屏幕信息的几种方式
  9. Android(安卓)Screen Monitor抓取真机屏幕(在电脑显示屏幕显示过

随机推荐

  1. Android应用程序的权限列表
  2. android ExpandableListView简单例子
  3. android 去ListView滑动阴影
  4. 修改ZXing for Android为竖屏模式
  5. android的四大组件及其生命周期
  6. Android(安卓)布局中 如何使控件居中
  7. Android中RelativeLayout的字符水平(垂直
  8. Android开发前奏
  9. 【Android工场】Android(安卓)Input Syst
  10. android基础入门控件详解(3)