某些Android应用程序仍然使用自3.0以来弃用的菜单按钮功能。许多新手机(例如Nexus)都有软件导航按钮,当应用程序使用它并且尚未定义ActionBar时,此菜单图标会附加到导航栏。
要在此方案中获得可用的屏幕尺寸,我可以从总屏幕高度中减去通知栏:
DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
int height = dm.heightPixels - getStatusBarHeight(mContext);
其中getStatusBarHeight
是在别处定义的函数。
但是,如果手机有硬件导航按钮,应用程序底部会显示一个额外的导航行,如附图所示。
在这种情况下,之前的解决方案不起作用,因为需要减去添加的导航栏。
我正在寻找一种能够解决这两种情况的通用函数,通过减去软件导航栏和通知栏来返回可用的屏幕尺寸/坐标。我想避免特定于供应商/设备的检查。
似乎有一种方法可以使用getWindow().getDecorView().getWindowVisibleDisplayFrame(rectangle);
来解决这个问题,但需要从Window中获取哪些值?
答案 0 :(得分:0)
要获得屏幕尺寸,我只需使用:
final DisplayMetrics DISPLAY_METRICS = ((Context)this).getResources().getDisplayMetrics();
然后使用以下方法检索尺寸:
final int DISPLAY_HEIGHT = DISPLAY_METRICS.heightPixels;
final int DISPLAY_WIDTH = DISPLAY_METRICS.widthPixels;
或者当我只需要一个维度时:
final int DISPLAY_HEIGHT = this.getResources().getDisplayMetrics().heightPixels;