在开发我的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;
当我向变量width
和height
致敬时,返回的尺寸为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"
/>
但是,唉,这也没有用。那么,有谁知道如何让手机正确地恢复其密度?
答案 0 :(得分:3)
这个“问题”与密度无关,这是因为您的应用程序以兼容模式运行。您的清单必须报告anyDensity = true。