DisplayMetrics metrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
我使用这些代码来获取屏幕的高度和宽度
我的Nexus7的屏幕高度应为1280
但它返回1205 ...
我的minSdkVersion是8级
所以我不能使用这些方法:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screen_width = size.x;
int screen_height = size.y;
现在,我应该如何获得正确的屏幕尺寸?
编辑:
if (Build.VERSION.SDK_INT >= 11) {
Point size = new Point();
try {
this.getWindowManager().getDefaultDisplay().getRealSize(size);
screenWidth = size.x;
screenHeight = size.y;
} catch (NoSuchMethodError e) {
Log.i("error", "it can't work");
}
} else {
DisplayMetrics metrics = new DisplayMetrics();
this.getWindowManager().getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
}
用它有效!
3 回答
我认为这会奏效 . 诀窍是你必须使用:
不
要处理您的API 8编码问题,请执行以下操作:
只有更新的API设备才会有屏幕导航按钮,因此需要新方法,旧设备会抛出异常,但不会有屏幕导航,因此较旧的方法很好 .
如果需要说:只是因为你的项目的最低API级别为8并不意味着你必须在那个级别编译它 . 我也使用8级作为最低限度,但我的项目大多是在13级(3.2)编译,使他们可以访问许多新方法 .
我编写了一个尽可能接近API 10到17的方法 . 它应该为API 14提供真正的宽度和高度,并且它可以用于其他所有内容 .
您可以使用
Display
或DisplayMetrics
找到真实的设备尺寸Using Display:
Using DisplayMetrics: