Display是一个机构体,描述了屏幕的一些基本信息,如屏幕的尺寸啊,密度啊。
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
TextView t = (TextView) findViewById(R.id.textView1);
t.setText(displayMetrics.toString());
Defy+的实验结果。
N7
N7屏幕按键占了64个像素。
一些概念:
Screen Size 指屏幕的物理大小,对角线多少英寸。通常分为small, normal, large, extra large
DIP(Density Independent Pixel\dp)密度独立像素。假设有两款手机,物理尺寸一样大,但一个屏幕分辨率为320x480,另一个为480x640
如果程序中用像素为单位来画一个按钮。像素大的那个手机的按钮看起来会比像素小的那个小很多。如果是用DIP为单位来画按钮,那么
两款设备上的按钮看起来会一样大。在UI layout中应该使用dp。在大约160dpi的屏幕上,一个DIP正好是一个物理像素。160dpi是系统定义
medium密度屏幕的基准线。在运行时,系统会根据具体的屏幕密度把dp转为px。公式:px = dp * (dpi/160)。如,在240dpi的屏幕上
1dp等于1.5个物理像素。
DPI(dots per inch)通常来描述屏幕的一个物理区域内有多少像素。Screen Density(屏幕密度)的low, high由DPI
来描述。android将屏幕密度归类为4组,low, medium, high, extra high。
Resolution(分辨率)一个屏幕上的物理像素数,通常为了支持多种屏幕,程序不应该直接使用分辨率,而应该考虑
屏幕尺寸(物理大小),密度.
各成员:
density:
屏幕的逻辑密度,是用来计算DIP的一个系数(比例因子)。160dpi的屏幕上1DIP正好是一个物理pixel,我的defy+的density是1.5。这个
值并不严格按照dpi来计算。
xdpi: x轴物理pixel/inch