Android UI教程 - Android布局
Android UI教程 - Android布局
测量单位
当在Android UI上指定元素的大小时,您应该知道以下测量单位:
dp是密度独立的像素。 1 dp等于160dpi上的一个像素 屏幕。 这是指定时的推荐测量单位 视图的维度。 160dpi屏幕是基线密度 假设由Android。 在引用a时,可以指定“dp"或“dip" 密度无关像素。
sp是与scale无关的像素。这类似于dp,建议用于指定字体大小。
点 - 点。 基于物理屏幕大小,点被定义为1/72英寸。
px - 像素。 对应于屏幕上的实际像素。 使用本机不是 推荐,因为您的UI可能无法正确显示在不同的设备上 屏幕分辨率。
将Dp转换为Px
将dp转换为px(像素)的公式如下:
pixels = dp * (dpi / 160)
其中dpi为120,160,240或320。
如果在235 dpi屏幕上的按钮,其实际宽度为
160 * (240/160) = 240 px.
当在作为160dpi设备的180dpi模拟器上运行时,其实际像素现在是160 *(160/160)= 160像素。
在这种情况下,一个dp等于一个px。
您可以使用View对象的getWidth()方法获取其宽度(以像素为单位):
public void onClick(View view) { Toast.makeText (this,String.valueOf(view.getWidth()),Toast.LENGTH_LONG).show(); }
屏幕密度
Android定义和识别四个屏幕密度:
- Low density (ldpi) - 120 dpi
- Medium density (mdpi) - 160 dpi
- High density (hdpi) - 240 dpi
- Extra High density (xhdpi) - 320 dpi
Nexus S的屏幕有4英寸屏幕对角线,屏幕宽度为2.04英寸。
其分辨率为480(宽)800(高)像素。 与480像素蔓延宽度为2.04英寸,结果是像素密度为约235每英寸点数(dpi)。
Nexus S被认为是hdpi设备,因为其像素密度最接近240dpi。
使用dp单元确保您的视图总是以正确的比例显示,而不管屏幕密度。