在显示器上使用.getWidth是否安全,即使它已被弃用

gab*_*jan 50 android deprecated width

所以我有一个小问题,我正在编写一个需要向服务器发送屏幕宽度的功能.我得到了一切工作,我使用:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
Run Code Online (Sandbox Code Playgroud)

获得宽度.但是.getWidht()函数已被弃用,它表示你需要使用:

Point size = new Point();
display.getSize(size);
Run Code Online (Sandbox Code Playgroud)

但是这个功能只适用于api等级13或更高,而我的最小sdk是8.那我该怎么办?如果我留在getWidth是否安全?为什么要添加新功能而不使它们向后兼容?

iBo*_*Bog 113

可能这种方法会有所帮助:

DisplayMetrics displaymetrics = new DisplayMetrics();
mContext.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;
int screenHeight = displaymetrics.heightPixels;
Run Code Online (Sandbox Code Playgroud)

  • `getDefaultDisplay` 已弃用 (5认同)
  • 我们可以使用 WindowManager.currentWindowMetrics.bounds 来支持 30 多个 API (2认同)

nmw*_*nmw 11

您可以在运行时检查API级别,并选择要使用的级别,例如:

final int version = android.os.Build.VERSION.SDK_INT;
final int width;
if (version >= 13)
{
    Point size = new Point();
    display.getSize(size);
    width = size.x;
}
else
{
    Display display = getWindowManager().getDefaultDisplay(); 
    width = display.getWidth();
}
Run Code Online (Sandbox Code Playgroud)


Fai*_*han 5

这是没有弃用的最新代码。

科特林

 val metrics: DisplayMetrics = this.getResources().getDisplayMetrics()
 val width = metrics.widthPixels
Run Code Online (Sandbox Code Playgroud)

爪哇

  DisplayMetrics metrics = context.getResources().getDisplayMetrics();
  int width = metrics.widthPixels;
  int height = metrics.heightPixels;
Run Code Online (Sandbox Code Playgroud)