android 獲取螢幕寬高

2021-07-09 16:57:47 字數 1772 閱讀 8897

發現專案中有兩種獲取螢幕寬高的方法:

一、通過windowmanager獲取display,通過display獲取metrics,通過metrics獲取寬高。最後的單位是px。

public static final int getscreenwidth()

二、通過windowmanager獲取display,然後在api13之前通過display.getwidth()來獲取寬高,單位是px;在api13以前通過display.getsize來獲取寬高。

public static int getscreenwidth (context context)  else 

return width;

}

那麼究竟哪一種是正確的呢?還是兩種都可以用呢?

第乙份**對應的

英文翻譯如下:

getmetrics(displaymetrics outmetrics):

得到乙個顯示的度量,用來描述這個顯示尺寸和密度的。(注:這個顯示就是傳入的引數outmetrics)

這個尺寸會根據當前螢幕的旋轉來調整。

通過這個方法返回的尺寸不是必然代表顯示的真實的未加工的尺寸(本地解析度的情況下)。返回的尺寸可能會被某些特定的系統調整,因為這些系統有一些一直顯示的特殊的裝飾元素。(注:比如可能華為等手機的虛擬鍵盤的高度可能沒有被計算在內。)這個尺寸也會被提供更老的設計在小螢幕的應用的相容縮放。

第二份**對應的

英文翻譯如下:

getwidth()

這個方法在api13之後廢棄了,使用getsize(point)代替

getsize(point outsize)

獲得乙個顯示的尺寸,單位px

注意這個值不應該被用來計算布局,因為乙個裝置會有特色的擁有螢幕裝飾(比如status bar),沿著顯示的邊緣減少大部分應用的顯示空間,布局應該使用window的尺寸。

這個尺寸會根據當前螢幕的旋轉來調整。

通過這個方法返回的尺寸不是必然代表顯示的真實的未加工的尺寸(本地解析度的情況下)。返回的尺寸可能會被某些特定的系統調整,因為這些系統有一些一直顯示的特殊的裝飾元素。(注:比如可能華為等手機的虛擬鍵盤的高度可能沒有被計算在內。)這個尺寸也會被提供更老的設計在小螢幕的應用的相容縮放。

結論:如果使用getsize就是第二種,需要在使用的時候減去

status bar 的高度。第一種不用。

補充:這裡不做使用,因為android操蛋的碎片化,以及要支援低版本的手機。

getrealmetrics

根據真實的螢幕尺寸得到乙個顯示的度量。

這個尺寸會根據當前螢幕的旋轉來調整。

真實的尺寸可能會小於這個螢幕的物理尺寸,當window manager是效仿更小顯示

(using adb shell am display-size)。(這裡解釋:因為api17出現了應用分屏顯示,比如魅族手機,所以返回的是分屏的真實大小,而不是螢幕的大小。)

getrealsize

獲取正確的顯示尺寸,沒有減去任何視窗的裝飾(各種狀態列),沒有申請任何相容性的縮放元素。

這個尺寸會根據當前螢幕的旋轉來調整。

這個尺寸會根據當前螢幕的旋轉來調整。

真實的尺寸可能會小於這個螢幕的物理尺寸,當window manager是效仿更小顯示(using adb shell am display-size)。(這裡解釋:因為api17出現了應用分屏顯示,比如魅族手機,所以返回的是分屏的真實大小,而不是螢幕的大小。)

這個尺寸會根據當前螢幕的旋轉來調整。

Android獲取螢幕寬高

方法一 windowmanager wm1 this.getwindowmanager int width1 wm1.getdefaultdisplay getwidth int height1 wm1.getdefaultdisplay getheight 方法二 windowmanager wm...

獲取螢幕的寬高

獲取螢幕長寬常用方法有三種 androidmanifest.xml檔案中,加入supports screens節點,這樣的話,當前的android程式就支援了多種解析度,那麼就可以得到正確的物理尺寸了。方法一 windowmanager wm windowmanager getsystemservi...

關於獲取Flex Mobile螢幕寬高

1.mobile width and height import flash.display.screen import flash.system.capabilities trace capabilities.screenresolutionx,capabilities.screenresolut...