android中使用DisplayMetrics獲取屏幕參數

--關於Density

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,已知240x320,1.5"x2" ,可以計算出densityDpi等於160。即240/1.5=160,或320/2=160。再通過densityDpi/160計算出density的值1.0。

screen-2,已知320x480,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()對象中的屬性值

--本機上調試時記錄的數據

DENSITY_DEFAULT    160    
DENSITY_DEVICE    240    
DENSITY_HIGH    240    
DENSITY_LOW    120    
DENSITY_MEDIUM    160    
DENSITY_TV    213    
DENSITY_XHIGH    320    
density: 1.5, sclaedDensity: 1.5 
densityDpi: 240    
heightPixels: 800, widthPixels: 480

xdpi: 160.42105, ydpi: 160

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章