Android get screen size including status bar and software navbar size

How can I get the size of the screen in pixels, including the navigation bar and status bar?

I've already tried to get the size using DisplayMetrics

, but the size doesn't include the software's navigation bar.

+3


source to share


1 answer


added programmatic navigation since API 17 (JELLY_BEAN_MR1), so we only need to enable the size of the navbar in API 17 and above. and note that when you get the screen size it is based on the current orientation.

public void setScreenSize(Context context) {
    int x, y, orientation = context.getResources().getConfiguration().orientation;
    WindowManager wm = ((WindowManager) 
        context.getSystemService(Context.WINDOW_SERVICE));
    Display display = wm.getDefaultDisplay();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
        Point screenSize = new Point();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            display.getRealSize(screenSize);
            x = screenSize.x;
            y = screenSize.y;
        } else {
            display.getSize(screenSize);
            x = screenSize.x;
            y = screenSize.y;
        }
    } else {
        x = display.getWidth();
        y = display.getHeight();
    }

    int width = getWidth(x, y, orientation);
    int height = getHeight(x, y, orientation);
}

private int getWidth(int x, int y, int orientation) {
    return orientation == Configuration.ORIENTATION_PORTRAIT ? x : y;
}

private int getHeight(int x, int y, int orientation) {
    return orientation == Configuration.ORIENTATION_PORTRAIT ? y : x;
}

      



link to gist -> here

+6


source







All Articles