Android 擷取螢幕解析度

來源:互聯網
上載者:User

標籤:

得到一個螢幕尺寸的三種方法如下:
        // 通過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

Android 擷取螢幕解析度

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.