Android:屏幕密度报告不正确



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

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

Width返回320,height设置为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;

当我烘烤变量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"
/>

但是,唉,这也不起作用。有谁知道我怎样才能让手机正确地返回它的密度?

这个"问题"与密度无关,这是因为您的应用程序在兼容模式下运行。你的舱单必须报告anyDensity=true

相关内容

  • 没有找到相关文章

最新更新