Android 獲取屏幕分辨率


得到一個屏幕尺寸的三種方法如下:
        // 通過WindowManager獲取
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);

        // 通過Resources獲取 
        DisplayMetrics dm2 = getResources().getDisplayMetrics();

        // 獲取屏幕的默認分辨率
        Display display = getWindowManager().getDefaultDisplay();
        System.out.println("width-display :" + display.getWidth());
        System.out.println("heigth-display :" + display.getHeight());

安卓4.2系統中,使用方法一得到了正確的屏幕尺寸值,而使用方法二和三得到的值全部為零。原因不祥。其中方法三中的display.getWidth()和display.getHeight()已被棄用。


DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);//display = getWindowManager().getDefaultDisplay();display.getMetrics(dm)(把屏幕尺寸信息賦值給DisplayMetrics dm);
width = dm.widthPixels;
height = dm.heightPixels;
xdpi = dm.xdpi;
ydpi = dm.ydpi;
density = dm.densityDpi;
fdensity = dm.density;


查詢log,得到各值如下:
D/Lichking(22643): -----------widthpixels---540
D/Lichking(22643): -----------heightpixels---960
D/Lichking(22643): -----------xdpi---244.92857
D/Lichking(22643): -----------ydpi---246.30302
D/Lichking(22643): -----------density---240
D/Lichking(22643): -----------fdensity---1.5
另提一點,我們通常所指的屏幕上的int尺寸是像素單位,比如我用getHitRect()得到控件的矩形坐標的值即使和像素尺寸相匹配的。

DisplayMetrics和Display的關系。
Display指代顯示區域這個對象,它可能是真實的物理屏幕,也可能僅指應用程序的顯示區域,比如在非全屏Activity里,系統因為有狀態欄,因此顯示區域要比物理屏幕要小。DisplayMetrics里封裝了顯示區域的各種屬性值。查看源碼發現,在DisplayMetrics對各個屬性值的注釋都說明為真實的物理尺寸。而且也發現display.getMetrics(dm)這一函數基本在應用在獲取真實屏幕尺寸的時候。記住這一點即好。


另外xdpi不是指屏幕寬度上以dp為單位的大小。以dp為單位的屏幕寬度需用計算公式:dpWidth = WidthPixels / fdensity = 540 / 1.5 = 360


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM