0

我尝试以编程方式读出设备的屏幕分辨率。我希望我的应用程序支持从 4 开始的所有 API 版本。不幸的是,读取分辨率的 API 已从版本 12 更改为 13。

这是我的代码:

int Measuredwidth = 0;
int Measuredheight = 0;

WindowManager w = getWindowManager();
if (Build.VERSION.SDK_INT >= 13) {
  Point size = new Point();
  w.getDefaultDisplay().getSize(size);
  Measuredwidth = size.x;
  Measuredheight = size.y;
} else {
  Display d = w.getDefaultDisplay();
  Measuredwidth = d.getWidth();
  Measuredheight = d.getHeight();
}

它不编译。:(

Call requires API level 13 (current min is 4): android.view.Display#getSize 

那么我该如何解决这个问题呢?

4

2 回答 2

2

这个“编译错误”实际上是一个 Lint 错误。

Lint API Check文章提供了大量信息。

您可以通过简单地使用 @TargetApi 批注对代码进行批注,将代码“标记”为针对 API 的较新版本。

这样你就可以保留你的 minSdkVersion 并支持旧版本的 Android。

于 2013-03-22T16:20:41.003 回答
-3

你可以这样做:

int Measuredwidth = 0;
int Measuredheight = 0;

Display d = getWindowManager().getDefaultDisplay();
Point size = new Point();
try {
    Method method = d.getClass().getMethod("getSize", Point.class);
    method.invoke(defaultDisplay, point);
    Measuredwidth = size.x;
    Measuredheight = size.y;

} catch (Exception e) {

}
if (Measuredwidth == 0){
    Measuredwidth = d.getWidth();
    Measuredheight = d.getHeight();
}
于 2013-03-22T16:22:32.317 回答