即使我指定了api级别,Android也会弃用警告

时间:2014-01-05 16:19:35

标签: android deprecated

我正在编码到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。

2 个答案:

答案 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;