Android:屏幕密度未正确报告

时间:2011-09-07 23:48:21

标签: android android-manifest android-screen

在开发我的Android应用程序的过程中,我注意到以下几行代码没有报告我的Samsung Nexus S的正确屏幕尺寸:

width = getResources().getDisplayMetrics().widthPixels;
height = getResources().getDisplayMetrics().heightPixels;

宽度返回为320,而高度设置为533.从this post我知道这是与设备的像素密度无关的问题。为了纠正这个问题,我写了下面的代码:

DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm);

int density = dm.densityDpi; 
int width = (density / 160) * dm.widthPixels; 
int height = (density / 160) * dm.heightPixels;

当我向变量widthheight致敬时,返回的尺寸为320宽,533高,这意味着没有任何变化。此外,dm.densityDpi将返回160,而不是235,就像三星Nexus S一样。

我读过的一些帖子似乎暗示问题可能在AndroidManifest.xml中。我已经将以下内容添加到我的XML文件中以尝试解决此问题:

<uses-sdk 
    android:minSdkVersion="7" 
    android:targetSdkVersion="10"
/>

<supports-screens 
    android:anyDensity="false"
    android:resizeable="false"
    android:largeScreens="true"
    android:normalScreens="true"
/>

但是,唉,这也没有用。那么,有谁知道如何让手机正确地恢复其密度?

1 个答案:

答案 0 :(得分:3)

这个“问题”与密度无关,这是因为您的应用程序以兼容模式运行。您的清单必须报告anyDensity = true。