获取实际屏幕高度(android)
问题描述:
我想获得运行我的应用程序的设备的实际屏幕高度。为了实现这一点,我尝试以下操作:获取实际屏幕高度(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
是获得屏幕高度的不好方法吗?
答
看到this答案
如果你的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或更低
UPDATE
对于API 17和更高的方法Display.getRealSize()
返回屏幕的全尺寸,如所提到in documentation:
获取显示 的实际尺寸未减去任何窗口装饰或施加任何兼容性 规模因素。
尺寸根据显示屏的当前旋转进行调整。
当窗口管理器正在模拟较小的显示(使用adb shell am display-size)时,实际大小可能小于屏幕的物理大小 。
答
int width=Resources.getSystem().getDisplayMetrics().widthPixels;
int height=Resources.getSystem().getDisplayMetrics().heightPixels;
答
我需要得到实际可用高度,进出的所有选项,这只是为我工作的事情。
创建一个矩形,并获得其尺寸:
Rect r = new Rect();
activityRootView.getWindowVisibleDisplayFrame(r);
int screenHeight = r.bottom - r.top;
其中activityRootView
是布局的根视图。
如果你需要提取工具栏高度:
int availableScreenHeight = screenHeight - toolbar.getHeight();
其中toolbar
是您的工具栏视图。
availableScreenHeight
现在没有状态栏,没有工具栏,也没有导航栏(如果设备正在使用它)。
非建议您的建议根据需要。 – lxknvlk