代码之家  ›  专栏  ›  技术社区  ›  Nitin Mesta

确定应用Android9.0的显示剪切类型

  •  2
  • Nitin Mesta  · 技术社区  · 6 年前

    我正在尝试识别android操作系统中以编程方式选择的显示剪切类型,>=9.0。

    我试过这样

    DisplayCutout displayCutout = getWindow().getDecorView().getRootWindowInsets().getDisplayCutout();
    

    但是显示切断总是返回空值。

    我也被用另一种方式试过

     int mode = ((Activity) context).getWindow().getAttributes().layoutInDisplayCutoutMode;
    

    但这给了我应用程序支持的价值。我的风格从来没有改变过。

    但我想知道用户何时从“开发者选项”设置中选择不同的剪切类型。

    请让我知道这是否可以实现!

    0 回复  |  直到 6 年前
        1
  •  1
  •   Amin.MasterkinG    6 年前

    经过一些测试,只有 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES 工作,添加 OnApplyWindowInsetsListener

    我已成功检索到 DisplayCutout 是直肠

    @Override
    public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
        DisplayCutout cut = insets.getDisplayCutout();
        if(cut != null) {
            int space = insets.getDisplayCutout().getBoundingRects().get(0).height();
            HCNXLog.e(TAG, "DisplayCutout.. " + space);
            RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) toolbar.getLayoutParams();
            lp.topMargin = space;
            toolbar.setLayoutParams(lp);
        }
        return insets;
    }
    
    推荐文章