在开发Android应用程序的过程中,我注意到以下代码行未报告三星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,这与Samsung 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"
/>


但是,a,这也没有用。那么,有谁知道我如何才能使手机正确返回其密度?

最佳答案

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

10-07 19:35
查看更多