--關於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