android.view.View#getRootWindowInsets ( )源码实例Demo

下面列出了android.view.View#getRootWindowInsets ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

private Map<String, Object> _getSafeAreaInsets() {
  final Map<String, Object> constants = new HashMap<>();

  if (getCurrentActivity() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    final Activity activity = getCurrentActivity();
    final View view = activity.getWindow().getDecorView();
    final WindowInsets insets = view.getRootWindowInsets();

    constants.put("safeAreaInsetsTop", PixelUtil.toDIPFromPixel(insets.getSystemWindowInsetTop()));
    constants.put("safeAreaInsetsBottom", PixelUtil.toDIPFromPixel(insets.getSystemWindowInsetBottom()));
    constants.put("safeAreaInsetsLeft", PixelUtil.toDIPFromPixel(insets.getSystemWindowInsetLeft()));
    constants.put("safeAreaInsetsRight", PixelUtil.toDIPFromPixel(insets.getSystemWindowInsetRight()));
  } else {
    constants.put("safeAreaInsetsTop", 0);
    constants.put("safeAreaInsetsBottom", 0);
    constants.put("safeAreaInsetsLeft", 0);
    constants.put("safeAreaInsetsRight", 0);
  }

  return constants;
}
 
源代码2 项目: AndroidNavigation   文件: AppUtils.java
@TargetApi(28)
private static boolean attachHasOfficialNotch(View view) {
    WindowInsets windowInsets = view.getRootWindowInsets();
    if (windowInsets != null) {
        DisplayCutout displayCutout = windowInsets.getDisplayCutout();
        return displayCutout != null;
    } else {
        throw new IllegalStateException("activity has not yet attach to window, you must call `isCutout` after `Activity#onAttachedToWindow` is called.");
    }
}
 
源代码3 项目: UIWidget   文件: NotchUtil.java
/**
 * @param view
 * @return false indicates the failure to get the result
 */
@TargetApi(28)
private static boolean attachHasOfficialNotch(View view) {
    WindowInsets windowInsets = view.getRootWindowInsets();
    if (windowInsets != null) {
        DisplayCutout displayCutout = windowInsets.getDisplayCutout();
        sHasNotch = displayCutout != null;
        return true;
    } else {
        // view not attached, do nothing
        return false;
    }
}
 
源代码4 项目: UIWidget   文件: NotchUtil.java
@TargetApi(28)
private static void getOfficialSafeInsetRect(View view, Rect out) {
    if (view == null) {
        return;
    }
    WindowInsets rootWindowInsets = view.getRootWindowInsets();
    if (rootWindowInsets == null) {
        return;
    }
    DisplayCutout displayCutout = rootWindowInsets.getDisplayCutout();
    if (displayCutout != null) {
        out.set(displayCutout.getSafeInsetLeft(), displayCutout.getSafeInsetTop(),
                displayCutout.getSafeInsetRight(), displayCutout.getSafeInsetBottom());
    }
}
 
源代码5 项目: Android-skin-support   文件: SkinNotchUtils.java
/**
 *
 * @param view
 * @return false indicates the failure to get the result
 */
@TargetApi(28)
private static boolean attachHasOfficialNotch(View view){
    WindowInsets windowInsets = view.getRootWindowInsets();
    if(windowInsets != null){
        DisplayCutout displayCutout = windowInsets.getDisplayCutout();
        sHasNotch = displayCutout != null;
        return true;
    }else{
        // view not attached, do nothing
        return false;
    }
}
 
源代码6 项目: Android-skin-support   文件: SkinNotchUtils.java
@TargetApi(28)
private static void getOfficialSafeInsetRect(View view, Rect out) {
    if(view == null){
        return;
    }
    WindowInsets rootWindowInsets = view.getRootWindowInsets();
    if(rootWindowInsets == null){
        return;
    }
    DisplayCutout displayCutout = rootWindowInsets.getDisplayCutout();
    if(displayCutout != null){
        out.set(displayCutout.getSafeInsetLeft(), displayCutout.getSafeInsetTop(),
                displayCutout.getSafeInsetRight(), displayCutout.getSafeInsetBottom());
    }
}
 
源代码7 项目: Android-skin-support   文件: SkinStatusBarUtils.java
@TargetApi(28)
private static void realHandleDisplayCutoutMode(Window window, View decorView) {
    if (decorView.getRootWindowInsets() != null &&
            decorView.getRootWindowInsets().getDisplayCutout() != null) {
        WindowManager.LayoutParams params = window.getAttributes();
        params.layoutInDisplayCutoutMode = WindowManager.LayoutParams
                .LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
        window.setAttributes(params);
    }
}
 
源代码8 项目: ImmersionBar   文件: NotchUtils.java
private static DisplayCutout getDisplayCutout(View view) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        if (view != null) {
            WindowInsets windowInsets = view.getRootWindowInsets();
            if (windowInsets != null) {
                return windowInsets.getDisplayCutout();
            }
        }
    }
    return null;
}
 
源代码9 项目: MNImageBrowser   文件: NotchUtils.java
private static DisplayCutout getDisplayCutout(View view) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        if (view != null) {
            WindowInsets windowInsets = view.getRootWindowInsets();
            if (windowInsets != null) {
                return windowInsets.getDisplayCutout();
            }
        }
    }
    return null;
}
 
源代码10 项目: CoordinatorLayoutExample   文件: StatusBarUtils.java
@TargetApi(28)
private static void realHandleDisplayCutoutMode(Window window, View decorView) {
    if (decorView.getRootWindowInsets() != null &&
            decorView.getRootWindowInsets().getDisplayCutout() != null) {
        WindowManager.LayoutParams params = window.getAttributes();
        params.layoutInDisplayCutoutMode = WindowManager.LayoutParams
                .LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
        window.setAttributes(params);
    }
}
 
 方法所在类
 同类方法