2014-01-05 16 views
2

我编码到API级别11.因此,要获得显示我有以下函数的宽度的Android弃用警告显示,即使我指定的API级别

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。

回答

7

IDE不够聪明,无法实现您在此尝试做的事情,因此您仍然会收到警告。

如果您想要摆脱它们,您可以定义两种方法:一种执行蜂窝式路线中的代码,并且具有注释@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(); 
} 
+0

感谢您的帮助。 +1 – learner

2

depracation基本上意味着,该代码将停止,因为开发商认为有更好的方式来做事很快就被支持。在这种情况下使用Display Metrics

DisplayMetrics display = this.getResources().getDisplayMetrics(); 

    int width = display.widthPixels; 
    int height = display.heightPixels; 
+0

感谢您的帮助。 +1。虽然你的回答是正确的,而且更具体,但我不能惩罚@Espiandev回答警告问题。 – learner