DisplayMetrics
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
總結
以上是生活随笔為你收集整理的DisplayMetrics的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发中反编译时出现Unsu
- 下一篇: Android 根据从服务器中获取的rg