Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Get the screen resolution / pixels as integer values

this is a really simple question on which I've found no answer :/ How can I quickly access the screen resolution (width, height) as integer values?

I've tried this one, but it always shows zero on my emulator:

DisplayMetrics dm = new DisplayMetrics();
int width = dm.widthPixels / 2;

In my case I want to dynamically create a table with tableRows, each containing two cols. This cols all shall fill half of the screen in width.

Can someone give me a hint?

like image 340
poeschlorn Avatar asked May 25 '10 07:05

poeschlorn


3 Answers

1.Simply use This inside activity to get screen width and height pixels.

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay()
    .getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;

2.This can also be used But requires Api level inlined check

Display display = getWindowManager().getDefaultDisplay();

Point size = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
    display.getSize(size);
    int width2 = size.x;
    int height2 = size.y;

} else {
    int width2 = display.getWidth();
    int height2 = display.getHeight();
}

3.Use This when you are not in activity but having context

WindowManager wm = (WindowManager) context.getSystemService(
            Context.WINDOW_SERVICE);
Display display1 = wm.getDefaultDisplay();
Point size1 = new Point();

int width1;
int height1;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {

    display1.getSize(size1);
    width1 = size1.x;
    height1 = size1.y;

} else {
    width2 = display.getWidth();
    height2 = display.getHeight();
}
like image 193
DeepakPanwar Avatar answered Oct 04 '22 15:10

DeepakPanwar


The trashkalmar answer is correct.

However, the results will be specific to the activity context. If you want the whole device screen resolution:

DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); // the results will be higher than using the activity context object or the getWindowManager() shortcut
wm.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenHeight = displayMetrics.heightPixels;

Note that the results also depend on the current device orientation.

like image 36
Guillaume Perrot Avatar answered Oct 04 '22 14:10

Guillaume Perrot


You can get screen metrics in this way:

Display d = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = d.getWidth();
int height = d.getHeight();
like image 21
trashkalmar Avatar answered Oct 04 '22 16:10

trashkalmar