我试图使用此代码获取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像素。那么代码有什么问题?
如何获得特定设备的实际屏幕分辨率?
答案 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