在开发我的 Android 应用程序的过程中,我注意到以下代码行没有为我的三星 Nexus S 报告正确的屏幕尺寸:
width = getResources().getDisplayMetrics().widthPixels;
height = getResources().getDisplayMetrics().heightPixels;
宽度返回为 320,而高度设置为 533。从这篇文章中,我知道这是一个与未考虑设备像素密度有关的问题。为了纠正这个问题,我写了下面的代码:
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,而不是三星 Nexus S 的 235。
我读过的一些帖子似乎表明问题可能出在 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"
/>
但是,唉,这也没有奏效。那么,有谁知道我怎样才能让手机正确返回其密度?