Android:显示错误的屏幕分辨率

时间:2011-02-22 13:34:47

标签: android screen-resolution android-screen

我试图使用此代码获取Android手机的屏幕分辨率

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    str_ScreenSize = dm.widthPixels + " x " + dm.heightPixels;
    str_ScreenSize = "dd" + " x " + dm.heightPixels;

当我在Galaxy S手机中尝试此代码时,屏幕分辨率为320x533像素,但实际上Galaxy S的屏幕分辨率为480x800像素。那么代码有什么问题?

如何获得特定设备的实际屏幕分辨率?

6 个答案:

答案 0 :(得分:21)

经过2天的搜索和测试,我终于找到了真正的问题。 所有上述编码都将给出正确的分辨率。但最重要的是我们需要在清单文件中提及目标SDK。否则,如果密度大于1,则会产生错误的结果。

<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />

需要在4-9之间设置targetSDK版本.. 希望这将有助于将来面临同样的问题。

答案 1 :(得分:4)

尝试使用它:

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

似乎你在划分Galaxy S的密度(1.5)之后获得像素。

480 / 1.5 = 320
799.5 / 1.5 = 533

编辑:

density = getResources().getDisplayMetrics().density;

答案 2 :(得分:1)

通过将此行添加到清单文件来禁用预缩放:

<supports-screens android:anyDensity="true" />

位置:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="...."
  android:versionCode="1"
  android:versionName="1.0">

<supports-screens android:anyDensity="true" />

<application android:label="@string/app_name" >
...

之后,您的显示屏将不再缩放,您也可以获得正确的显示分辨率。

答案 3 :(得分:0)

试试这个..

 Display display = getWindowManager().getDefaultDisplay();
int ScreenHeight = display.getHeight();
int ScreenWidth = display.getWidth();

答案 4 :(得分:0)

这似乎有效..虽然我不知道它是否是正确的方法..

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

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

答案 5 :(得分:0)

我是这样做的:

Display dis = getWindowManager().getDefaultDisplay();
Point point= new Point();
dis.getSize(point);
int width = point.x;
int height = point.y;

不在活动中时:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

在引入getSize之前(在API级别13中),您可以使用现已弃用的getWidth和getHeight方法:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated