获取实际的屏幕高度(android)

问题描述

看到这个答案

如果您的API级别> 13,请在活动时尝试

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

如果您不在活动中,则可以通过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),实际尺寸可能小于屏幕的物理尺寸。

解决方法

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

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让屏幕高度的好方法?

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”