Android:我应该怎么做而不是使用已弃用的函数(getwidth())?

时间:2013-02-25 12:55:18

标签: java android deprecated

我想使用函数activity.getWindowManager()。getDefaultDisplay()。getwidth()但是有一个警告说这个函数已被弃用

我该怎么办?我还应该使用这个功能吗?还是有一些其他功能也一样?

7 个答案:

答案 0 :(得分:27)

弃用意味着不应该使用它,但出于兼容性原因,它仍然存在。

您应该使用:

Point size = new Point();
activity.getWindowManager().getDefaultDisplay().getSize(size);
int width = size.x;
int height = size.y;

答案 1 :(得分:3)

  

注释@Deprecated的程序元素是程序员所在的程序元素   不鼓励使用,通常是因为它是危险的,或者是因为   存在更好的选择。编译器在被弃用的程序时发出警告   在不推荐使用的代码中使用或覆盖元素。

请参阅thisthis以及thisthis以及this等等...........

答案 2 :(得分:2)

来自Display API参考:

int getWidth()
This method was deprecated in API level 13. Use getSize(Point) instead.

这意味着您将实例化Point,将其传递给getSize()并从中检索x

答案 3 :(得分:1)

不推荐使用的函数是引入了新的更好的替代函数的函数,将来它们可能在新的API中不受支持。但随意使用它们,因为它们需要花费大量时间才能过期。

答案 4 :(得分:1)

将光标放在方法名称上,然后按F2以获取有关最新API的信息。 (假设您正在使用Eclipse)

答案 5 :(得分:0)

正确的做法是检查SDK版本。根据您的不同,您可以使用已弃用的功能或使用Point执行此操作。请参阅以下内容:Is it safe to use .getWidth on Display even though its deprecated

答案 6 :(得分:0)

尝试:

WindowManager windowmanager = (WindowManager) this.getContext()
                              .getSystemService(Context.WINDOW_SERVICE);

使用:

Display display = windowmanager.getDefaultDisplay();

Point size = new Point();
try {
    display.getRealSize(size);
} catch (NoSuchMethodError err) {
    display.getSize(size);
}
int width = size.x;
int height = size.y;

或与:

DisplayMetrics displayMetrics = new DisplayMetrics();
windowmanager.getDefaultDisplay().getMetrics(displayMetrics);
int deviceWidth = displayMetrics.widthPixels;
int deviceHeight = displayMetrics.heightPixels;