Reputation: 1673
I m a bit confused about x dpi, y dpi , screen width and screen height, ratio and density while making a custom device configuration from graphical layout design view. This is the only thing I find for my REAL device's configuration - 240 x 320 pixels, 2.8 inches (~143 ppi pixel density) . How do I get the following info. for my custom device configuration -
x dpi= ?
y dpi = ?
screen width=240
screen height=320
ratios=?
density=?
screen size=2.8 inch (diagonal)
according to the developer guide-
Upvotes: 3
Views: 4176
Reputation: 753
It was bit confusing for me as well . But running these functions on different device , I get the hold of it and its now all clear to me.Hope this will help you as well.
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
//Note: the above formula above gives you values: For Samsung Galaxy sIII : 720 * 1280 For Samsung 4g LTE Tablet : 800 by 1232
So you will wonder how both devices have almost same height. But this is not how it works. you have to use below function "convertPixelsToDp" to get the actual dp.
public static float convertPixelsToDp(float px,Context context)
{
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / (metrics.densityDpi / 160f);
return dp;
}
So after using this formula it will give you 360*640 For Samsung Galaxy sIII.
//To convert dp back to pixel
public static float convertDpToPixel(float dp,Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float px = dp * (metrics.densityDpi/160f);
return px;
}
//This will give you ratio
// For Samsung Galaxy sIII : ratio is 2 (320/160)
float d = getApplicationContext().getResources().getDisplayMetrics().density;
// will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH
//For Samsung Galaxy sIII : 320 dpi
int dpiClassification = metrics.densityDpi;
Upvotes: 2