Android Call需要API级别13(当前最小值为10):android.view.Display #getSize

时间:2014-04-24 18:56:33

标签: android

我正在尝试尽可能多的架构,并尽可能少地发出警告。

Point dims = new Point();
if (android.os.Build.VERSION.SDK_INT >= 13) {
      mWindowManager.getDefaultDisplay().getSize(dims);
} else if (android.os.Build.VERSION.SDK_INT < 13) {
  dims.x = mWindowManager.getDefaultDisplay().getWidth();
  dims.y = mWindowManager.getDefaultDisplay().getHeight();
}

但这给了我错误和警告:

Call requires API level 13 (current min is 10): android.view.Display#getSize
The method getWidth() from the type Display is deprecated

They say to change the manifesto(或here)但为什么上面的代码不能用于编译器?难道我不能摆脱10到18的api范围吗?

2 个答案:

答案 0 :(得分:7)

您已经对SDK版本进行了检查,因此可以忽略编译器的弃用警告和有关新API的lint警告。

将代码段拉到单独的方法并向其添加以下注释:

@TargetApi(13)
@SuppressWarnings("deprecation")

请注意,if的{​​{1}}部分是多余的。简单else if就足够了。

答案 1 :(得分:0)

要检索显示尺寸,建议使用

context.getResources().getDisplayMetrics()

代替。然后使用widthPixelsheightPixels属性。

使用当前上下文为您提供多个显示器当前显示的尺寸,这也更安全。