Android:在API版本中获取屏幕分辨率或丢失

时间:2013-03-22 16:03:23

标签: android api

我尝试以编程方式读出设备的屏幕分辨率。我希望我的应用程序能够支持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 

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

2 个答案:

答案 0 :(得分:2)

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

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

您可以通过使用@TargetApi注释简单地注释代码,将代码“标记”为定位到较新版本的API。

这样您就可以保留minSdkVersion并支持旧版Android。

答案 1 :(得分:-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();
}