我尝试以编程方式读出设备的屏幕分辨率。我希望我的应用程序能够支持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
那么我该如何解决这个问题呢?
答案 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();
}