Reputation: 973
I want to get Android device's screen size. I'm using these 3 codes to do this but these are giving me the activity's size; which is without the size of the status bars height. On tablet with 800px height, this code gives 764px. 36px goes to status bar on the bottom.
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
final int width = size.x;
final int height = size.y;
Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int height2= rectgle.bottom;
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int actualHeight = metrics.heightPixels;
But I need a code which gives me the actual size of the screen. Not the activity's. can anyone help me about this? Thank you.
Upvotes: 6
Views: 8422
Reputation: 10625
This snippet will give you height of your status bar.
Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
int contentViewTop=
window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight= contentViewTop - StatusBarHeight;
So the total height of screen is :-
height = height+TitleBarHeight;
original answer is here. Also note this will not work in onCreate put that code in runnable.
Upvotes: 3