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