获取实际屏幕高度(android)

新手上路,请多包涵

我想获取运行我的应用程序的设备的实际屏幕高度。为此,我尝试了以下操作:

 DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int Height = metrics.heightPixels;
TextView HeightView = (TextView) findViewById(R.id.screenHeight);
HeightView.setText("Screen Height: " + Height);

int Width = metrics.widthPixels;
TextView WidthView = (TextView) findViewById(R.id.screenWidth);
WidthView.setText("Screen Width: " + Width);

我使用模拟器运行的设备屏幕宽度为 1080 像素,屏幕高度为 1920 像素。宽度显示正确(1080 像素),但高度根据应用只有 1776 像素。我需要什么才能使我的应用程序显示正确的屏幕高度? metrics.heightPixels 获取屏幕高度的糟糕方法吗?

原文由 Taegos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 917
2 个回答

看到 这个 答案

如果您的 API 级别 > 13 如果您正在活动,请尝试此操作

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

如果您不在 Activity 中,您可以通过 WINDOW_SERVICE 获取默认显示:

 WindowManager wm = (WindowManager)    context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

getWidth 和 getHeight 适用于 API 级别 13 或更低

更新

对于 API 17 及更高版本的方法 Display.getRealSize() 返回全屏尺寸,如 文档 中所述:

在不减去任何窗口装饰或应用任何兼容性比例因子的情况下获取显示的实际大小。

大小根据显示器的当前旋转进行调整。

当窗口管理器模拟较小的显示器时(使用 adb shell am display-size),实际尺寸可能小于屏幕的物理尺寸。

原文由 Rosario Vivas 发布,翻译遵循 CC BY-SA 3.0 许可协议

int width=Resources.getSystem().getDisplayMetrics().widthPixels;
int height=Resources.getSystem().getDisplayMetrics().heightPixels;

原文由 Makvin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题