HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120
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
// Android不会使用直接的像素映射,它使用了独立的像素密度量化值,然后扩展实际的屏幕尺寸
// 到这些独立的手工量化值.因此,密度的属性将是那些常量之一(120,160或240 dpi)
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; // 320
int height = dm.heightPixels; // 480
System.out.println("width_________" + width);
System.out.println("height_________" + height);
// will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH
int dpiClassification = dm.densityDpi;
// these will return the actual dpi horizontally and vertically
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;