我尝试了两种方法来查找设备尺寸(宽度和高度):
getWindowManager().getDefaultDisplay();
((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
但这两种方法都不可靠,因为有时它们会给我错误的维度。对于拥有480x800分辨率的HTC欲望,它会给我尺寸为320x533,这是不正确的。有人可以建议更可靠的方法吗?
答案 0 :(得分:1)
这应该有效
Display display = activity.getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int Height = display.getHeight();
答案 1 :(得分:1)
以下解决方案对我有用:
public void setDeviceDimensions() {
WindowManager w = getWindowManager();
Display d = w.getDefaultDisplay();
width = d.getWidth();
height = d.getHeight();
}
以及清单中的以下条目:
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="9" />
答案 2 :(得分:0)
这也有效:
public static String getDisplayPixelSize(Activity activity) {
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
return metrics.widthPixels + " x " + metrics.heightPixels;
}
答案 3 :(得分:0)
您应该在以下条款中有明确的概念,
屏幕尺寸 实际物理尺寸,以屏幕对角线测量。 为简单起见,Android将所有实际屏幕尺寸分为四种通用尺寸:小尺寸,普通尺寸,大尺寸和超大尺寸。
屏幕密度: 屏幕物理区域内的像素数量;通常称为dpi(每英寸点数)。例如,与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域内具有更少的像素。 为简单起见,Android将所有实际屏幕密度分为四种通用密度:低,中,高和超高。
<强>定位:强> 从用户的角度看屏幕的方向。这可以是横向或纵向,这意味着屏幕的宽高比分别为宽或高。请注意,默认情况下,不仅不同的设备在不同的方向上运行,但在用户旋转设备时,方向可能会在运行时发生变化。
解决:强> 屏幕上的物理像素总数。添加对多个屏幕的支持时,应用程序无法直接使用分辨率;应用程序应仅关注屏幕尺寸和密度,如通用尺寸和密度组所指定的那样。
与密度无关的像素(dp): 在定义UI布局时应使用的虚拟像素单元,以与密度无关的方式表达布局尺寸或位置。 与密度无关的像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统根据使用的屏幕的实际密度,根据需要透明地处理dp单元的任何缩放。 dp单位到屏幕像素的转换很简单:px = dp *(dpi / 160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。在定义应用程序的UI时,应始终使用dp单位,以确保在不同密度的屏幕上正确显示UI。
参考:android开发者网站