發現專案中有兩種獲取螢幕寬高的方法:
一、通過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...