13

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

我该怎么办 ?我应该使用这个功能吗?还是有其他一些功能可以做同样的事情?

4

7 回答 7

28

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

您应该改用:

Point size = new Point();
activity.getWindowManager().getDefaultDisplay().getSize(size);
int width = size.x;
int height = size.y;
于 2013-02-25T12:59:42.200 回答
2

DisplayAPI 参考:

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

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

于 2013-02-25T12:58:06.957 回答
2

@Deprecated 注释的程序元素是不鼓励程序员使用的程序元素,通常是因为它很危险,或者因为存在更好的替代方案。当在非弃用代码中使用或覆盖弃用的程序元素时,编译器会发出警告。

看到这个这个这个还有这个这个等等………… _ _

于 2013-02-25T12:58:29.517 回答
1

不推荐使用的功能是那些引入了新的更好替代品的功能,并且将来可能不会在新的 API 中得到支持。但是请随意使用它们,因为它们需要很长时间才能过期。

于 2013-02-25T12:58:02.587 回答
1

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

于 2013-02-25T12:59:48.900 回答
1

尝试:

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;
于 2017-02-04T08:51:41.470 回答
0

正确的做法是检查 SDK 版本。根据这一点,您可以使用已弃用的功能或使用 Point. 请参阅以下内容:即使已弃用,在 Display 上使用 .getWidth 是否安全

于 2013-02-25T12:59:45.843 回答