2018년 3월 25일 일요일

[Android] How to get display size


1. Get display size in pixel

1
2
3
4
5
6
7
8
9
@SuppressLint("NewApi")
public static void showScreenSizeInPixel( Activity activity ) {
    Display display = activity.getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics ();
    display.getMetrics(outMetrics);
    Toast.makeText( activity
        , "w: " + outMetrics.widthPixels + ", h: " + outMetrics.heightPixels
        , Toast.LENGTH_SHORT).show();
}


Result:



2. Get display size in dp using DisplayMetrics


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
@SuppressLint("NewApi")
public static void showScreenInfo( Activity activity ) {
    Display display = activity.getWindowManager().getDefaultDisplay();
    DisplayMetrics outMetrics = new DisplayMetrics ();
    display.getMetrics(outMetrics);
    float density  = activity.getResources().getDisplayMetrics().density;
    float dpHeight = outMetrics.heightPixels / density;
    float dpWidth  = outMetrics.widthPixels / density;
    Toast.makeText( activity, 
        "density: " + density + ", wdp: " + dpWidth + ", hdp: " + dpHeight
        , Toast.LENGTH_SHORT).show();
}


Result:


3. Get display size in dp using Configuration

In this method, the screen height is only 615dp which is not same as in DisplayMetrics (640dp), It seems Configuration returns without notification area.

1
2
3
4
5
6
7
@SuppressLint("NewApi")
public static void showScreenSizeDp( Activity activity ) {
    Configuration configuration = activity.getResources().getConfiguration();
    Toast.makeText( activity, 
        "wdp: " + configuration.screenWidthDp + ", hdp: " + configuration.screenHeightDp
        , Toast.LENGTH_SHORT).show();   }   
}

Result:









댓글 없음:

댓글 쓰기