我正在编码到api level 11.所以为了得到显示器的宽度,我有以下功能
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
Point size = new Point();
display.getSize(size);
width = size.x;
}
else {
width = display.getWidth();
}
我这样做所以我不会得到弃用警告。但我仍然收到getWidth
的警告。为什么警告不会消失?
getSize
我也收到错误,说调用需要api等级13但是检测到11。
答案 0 :(得分:8)
IDE不够智能,无法实现您在此处尝试的操作,因此您仍然会收到警告。
如果你想要摆脱它们,你可以定义两个方法:一个在Honeycomb路由中执行代码,并且具有注释@TargetApi(13)
,第二个在另一个路径中执行代码注释@SuppressWarnings("deprecation")
。就个人而言,我不担心。
示例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
width = getWidthHoneycombMR2();
}
else {
width = getWidthLegacy(display);
}
...
@TargetApi(13)
public int getWidthHoneycombMR2() {
Point size = new Point();
display.getSize(size);
return size.x;
}
@SuppressWarnings("deprecation")
public int getWidthLegacy(Display display) {
return display.getWidth();
}
答案 1 :(得分:2)
depracation基本上意味着代码将很快停止支持,因为开发人员认为有更好的方法来做事。在这种情况下使用Display Metrics
DisplayMetrics display = this.getResources().getDisplayMetrics();
int width = display.widthPixels;
int height = display.heightPixels;