1

这个问题是这个问题#1的一部分

我正在创建功能以将屏幕截图捕获到 Android 应用程序中。捕获屏幕截图后,我使用以下代码从位图中裁剪导航栏高度。从height - getNavBarHeight()底部裁剪位图的位置(所以当架子在底部时使用)。但是 Chromebook 提供了在左下角移动架子的功能(见截图)。因此todo,我需要相应地裁剪位图

if (Utils.isChromeBookDevice(FloatingOverlayViewService.this)) {
    bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height - getNavBarHeight());//width & height is width & height of entire screen
    // TODO: 9/11/20 if shelf is in left x = getNavBarHeight(),
    //  if shelf is in right width = width - getNavBarHeight(),
    //  if shelf is in bottom height  = height - getNavBarHeight()
} else
    bitmap = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width, height - statusBarHeight);

/** return the height of navigation bar */
private int getNavBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0) {
        return getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

所以主要问题是导航栏在左侧还是右侧时如何裁剪?

当架子位于底部时,您可以在这些屏幕截图中看到我的问题,我可以使用上面的代码对其进行裁剪。但是左右呢?

问题#2是当架子自动隐藏时,我不需要使用上面的代码裁剪导航栏。所以我还需要检测自动隐藏架是打开还是关闭

4

0 回答 0