Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting the actual screen height (android)

I want to get the actual screen height of the device that runs my app. To achieve this i try the following:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int Height = metrics.heightPixels;
TextView HeightView = (TextView) findViewById(R.id.screenHeight);
HeightView.setText("Screen Height: " + Height);

int Width = metrics.widthPixels;
TextView WidthView = (TextView) findViewById(R.id.screenWidth);
WidthView.setText("Screen Width: " + Width);

The device that I run using the emulator has a screen width of 1080 pixels and a screen height of 1920 pixels. The width is displayed correctly (1080 pixels) but the height is according to the app only 1776 pixels. What do I need to make my app display the correct screen height? Is metrics.heightPixels a bad way of getting the screen height?

like image 303
Taegos Avatar asked Mar 03 '16 19:03

Taegos


People also ask

How do I get the screen size on my Android?

1. Display display = getWindowManager(). getDefaultDisplay(); Point size = new Point(); display. getSize(size); int width = size.

How do I find out the size of my screen on my phone?

If you have the screens diagonal, you can multiply that measurement by 0.872 to get the screen's width. You can also multiply the diagonal by 0.49 to get the screen's height. Then, if you wish to find the screen area, multiply the width by the height.


3 Answers

see this answer

if your API level > 13 try this if you are in activity

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

If you're not in an Activity you can get the default Display via WINDOW_SERVICE:

WindowManager wm = (WindowManager)    context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

getWidth and getHeight is for API level 13 or less

UPDATE

For API 17 and higher method Display.getRealSize() returns full size of screen, as mentioned in documentation:

Gets the real size of the display without subtracting any window decor or applying any compatibility scale factors.

The size is adjusted based on the current rotation of the display.

The real size may be smaller than the physical size of the screen when the window manager is emulating a smaller display (using adb shell am display-size).

like image 119
Rosario Vivas Avatar answered Oct 27 '22 17:10

Rosario Vivas


int width=Resources.getSystem().getDisplayMetrics().widthPixels;
int height=Resources.getSystem().getDisplayMetrics().heightPixels;
like image 32
Makvin Avatar answered Oct 27 '22 16:10

Makvin


I needed to get the actual available height, and out of all the options this is the only thing that worked for me.

Create a rectangle, and get its dimensions:

Rect r = new Rect();
activityRootView.getWindowVisibleDisplayFrame(r);
int screenHeight = r.bottom - r.top;

where activityRootView is the root view of your layout.

If you need to extract the toolbar height:

int availableScreenHeight = screenHeight - toolbar.getHeight();

where toolbar is your toolbar view.

availableScreenHeight will now be without the statusbar, without the toolbar, and without the navigation bar (if the device is using it).

like image 7
lenooh Avatar answered Oct 27 '22 15:10

lenooh