手机系统常识了解(3)

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;


你可能感兴趣的:(android,工作)