codecamp

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单元确保您的视图总是以正确的比例显示,而不管屏幕密度。



Android UI教程 - Android ImageView
Android UI教程 - Android LinearLayout
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }