如何在Android中获取屏幕尺寸,包括虚拟按钮?

Rel*_*mes 6 android

对于正常使用,您可以使用DisplayMetrics类并获得"可渲染"大小,但我想弄清楚实际的物理屏幕大小,其中包括虚拟按钮高度.

在我的Galaxy Nexus上报告的尺寸无论我尝试的是1196x720,我可以使用什么来获得1280x720的物理尺寸?同样适用于Nexus 7,Nexus 4和Nexus 10设备.

更新:这是我现在使用的最终代码,包括修复:

    //Activity A = this;
    DisplayMetrics displayMetrics = new DisplayMetrics();
    WindowManager wm = (WindowManager) A.getApplicationContext().getSystemService(Context.WINDOW_SERVICE); 
    Display disp = wm.getDefaultDisplay();

    int API_LEVEL =  android.os.Build.VERSION.SDK_INT;
    if (API_LEVEL >= 17)
    {
        disp.getRealMetrics(displayMetrics);
    }
    else
    {
        disp.getMetrics(displayMetrics);
    }

    int Width = displayMetrics.widthPixels;
    int Height = displayMetrics.heightPixels;
Run Code Online (Sandbox Code Playgroud)

a.b*_*cci 6

您应该使用Display.getRealSize(Point)来自此处的官方文档

显示区域以两种不同的方式描述.

应用程序显示区域指定可能包含应用程序窗口的显示部分,不包括系统装饰.

应用程序显示区域可以小于实际显示区域,因为系统减去诸如状态栏之类的装饰元素所需的空间.使用以下方法查询应用程序显示区域:getSize(Point),getRectSize(Rect)和getMetrics(DisplayMetrics).

实际显示区域指定包含系统装饰的内容的显示部分.即便如此,如果窗口管理器使用(adb shell am display-size)模拟较小的显示器,则实际显示区域可能小于显示器的物理尺寸.使用以下方法查询实际显示区域:getRealSize(Point),getRealMetrics(DisplayMetrics).

  • 我懂了.不幸的是,`Display` API(<17)旨在仅返回"可渲染"区域大小.遗憾的是这样的功能已经推出了这么晚. (2认同)