[屏幕尺寸Screen size]
即显示屏幕的实际大小,按照屏幕的对角线进行测量。
Android把所有的屏幕大小分为四种尺寸:
小,普通,大,超大(分别对应:small, normal, large, and extra large).
[屏幕分辨率Resolution]
在屏幕上显示的物理像素总和。
尽管分辨率通常用宽x高表示,但分辨率并不意味着具体的屏幕长宽比。
在Andorid系统中,应用程序不直接使用分辨率。
[密度Density]
根据像素分辨率,在屏幕指定物理宽高范围内能显示的像素数量。
在同样的宽高区域,低密度的显示屏能显示的像素较少,而高密度的显示屏则能显示更多的像素。
屏幕密度非常重要,
因为其它条件不变的情况下,
宽高固定的UI组件(比如一个按钮)在在低密度的显示屏上显得很大,
而在高密度显示屏上看起来就很小。
Android把所有的屏幕分辨率也分为四种尺寸:小,普通,大,超大(分别对应:small, normal, large, and extra large).
应用程序可以为这四种尺寸分别提供不同的资源
平台将透明的对资源进行缩放以适配指定的屏幕分辨率。
[设备独立像素Density-independent pixel (dp)]
应用程序可以用来定义UI组件的虚拟像素单元,通过密度无关的方式来描述布局尺寸和位置。
一个设备独立像素相当于一个160 dpi屏幕上的物理像素。
在程序运行时,系统根据屏幕的实际密度透明的处理任何需要缩放的设备独立像素单元,
设备独立像素转换成屏幕实际像素的换算很简单:pixels = dps * (density / 160).
例如在240 dpi的屏幕上,
1个设备独立像素等于1.5物理像素.
为确保UI组件在不同的屏幕都能合适的展示,
强烈建议使用设备独立像素单元来定义你的应用程序UI。
四种屏幕尺寸分类:: small, normal, large, and xlarge
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
DPI是“dot per inch”的缩写,每英寸像素数。
ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Log.d("susansusan", "Width = " + metrics.widthPixels);
Log.d("susansusan", "Height = " + metrics.heightPixels);
Log.d("susansusan", "The logical density of the display = "
+ metrics.density);
Log.d("susansusan", "The screen density expressed as dots-per-inch = "
+ metrics.densityDpi);
Log.d("susansusan",
"A scaling factor for fonts displayed on the display = "
+ metrics.scaledDensity);
Log.d("susansusan",
"The exact physical pixels per inch of the screen in the X dimension = "
+ metrics.xdpi);
Log.d("susansusan",
"The exact physical pixels per inch of the screen in the Y dimension = "
+ metrics.ydpi);