12

我正在尝试使用此代码获取 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 像素。那么代码有什么问题??

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

4

6 回答 6

22

最后经过 2 天的搜索和测试,我终于设法找出这里真正的问题是什么。所有上面的编码都会给出正确的解决方案。但最重要的是我们需要在 manifest 文件中提及目标 SDK。否则如果密度大于 1 会给出错误的结果。

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

需要将 targetSDK 版本设置为 4-9 之间的任何值。希望这对将来遇到同样问题的人有所帮助。

于 2011-02-24T15:37:04.483 回答
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;
于 2011-02-22T13:48:41.040 回答
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" >
...

之后,您的显示器将不再缩放,并且您还可以获得正确的显示分辨率。

于 2013-12-21T09:45:49.600 回答
0

试试这个..

 Display display = getWindowManager().getDefaultDisplay();
int ScreenHeight = display.getHeight();
int ScreenWidth = display.getWidth();
于 2011-02-22T14:05:29.103 回答
0

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

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

density=dm.densityDpi; 
width=(density/160)*dm.widthPixels; 
height=(density/160)*dm.heightPixels;
于 2011-02-22T16:23:47.653 回答
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
于 2013-11-11T08:50:15.060 回答