android中使用DisplayMetrics獲取屏幕參數

關於Density

android中使用DisplayMetrics獲取屏幕參數,int android.graphics.Bitmap.getDensity(),返回bitmap-density(密度)。默認的density就是當前display-density,除非當前應用程序不支持不同的screen-density。

在android.util.DisplayMetrics類中定義瞭一些變量和常量。

常量DENSITY_XXX,

int類型,定義瞭不同級別的密度對應的dpi數值,

低密度,DENSITY_LOW,120,

中密度,DENSITY_MEDIUM,160,

高密度,DENSITY_HIGH,240,

超高密度,DENSITY_XHIGH,320,

默認密度,DENSITY_DEFAULT,160(即中密度)。

變量widthPixels和heightPixels,

int類型,單位像素,display的absolute-width和absolute-height。

變量density,

float類型,display的logic-density。是一個scaling-factor,用在Density-Independent-Pixel單位,一個dip就是一個像素。

160dpi的screen提供系統display的baseline。

因此,160dpi的screen-density值為1(160/160),120dpi的screen-density值為0.75(120/160)。

screen-1,已知240×320,1.5”x2” ,可以計算出densityDpi等於160。即240/1.5=160,或320/2=160。再通過densityDpi/160計算出density的值1.0。

screen-2,已知320×480,1.5”x2”,可以計算出densityDpi等於240。即320/1.5=240,或480/2=240。再通過densityDpi/160計算出density的值1.5。

變量densityDpi,

int類型,dots-per-inch。

關於分辨率和尺寸

分辨率是手機長和寬方向上的像素個數,

尺寸是指屏幕的實際物理大小,

手機尺寸手機尺寸115.5×61×12.45解析得長115.5毫米,寬61毫米,高12.45毫米。

1英寸(inch)等於2.54厘米,

獲取DisplayMetrics對象,再獲取屏幕的參數

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

關於scaledDensity

float類型,一個scaling-factor,用於fonts顯示,同density相同的值,除非由於基於font-size上的體驗需要做微調。

–TyuMainApp.getApp().getResources().getDisplayMetrics()對象中的屬性值

You May Also Like