2013-04-22 65 views
5

我有600(寬)x 1024(高)的屏幕尺寸。我得到當前寬度600,但錯誤地獲得高度976(沒有旋轉屏幕)。我得到當前寬度1024,但錯誤獲得高度552(旋轉屏幕)。Android中顯示寬度和高度錯誤

int rowPixelWidth = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth(); 
       int rowWidth = (int)Math.floor(rowPixelWidth/this.getResources().getDisplayMetrics().density); 
       int rowPixelheight = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight(); 
       int rowheight = (int)Math.floor(rowPixelheight/this.getResources().getDisplayMetrics().density); 
       Log.d("rowWidth","rowWidth"+rowWidth); 
       Log.d("rowheight","rowheight"+rowheight); 
------------------------------------------------------------- 
<uses-sdk 
     android:minSdkVersion="3" 
     android:targetSdkVersion="8" /> 
    <supports-screens android:anyDensity="true"/> 
------------------------------------------------------------- 

這段代碼有什麼問題?

這裏有一些數字爲典型的屏幕寬度:

  1. 320dp:典型手機屏幕(240×320 LDPI,MDPI分辨率320x480,480x800的華電國際等)。
  2. 480dp:像Streak(480x800 mdpi)這樣的Tweener平板電腦。
  3. 600dp:7英寸平板電腦(600x1024 mdpi)。
  4. 720dp:10「平板電腦(720x1280 mdpi,800x1280 mdpi等)。

我得到當前的寬度,但對所有設備(不包括(小320x480屏)無法獲得當前高度。

我嘗試代碼Get screen dimensions in pixels但同樣會出現問題。

+3

您的代碼是正確的。某些設備從可用的屏幕分辨率中減去以前的硬件按鍵的屏幕區域,這些按鍵現在是顯示屏上的觸摸按鍵。 – 2013-04-22 06:08:38

+0

我得到當前的寬度和高度只有320(寬)×480(高)屏幕,但沒有得到當前的寬度和高度的另一個屏幕。 – AnilPatel 2013-04-24 09:46:01

+0

爲什麼這是一個問題? – 2013-04-24 09:51:23

回答

9

相信getDefaultDisplay只給你應用程序將要顯示的窗口,它不會考慮其他事情,如頂部的通知欄或底部的安卓按鈕(家庭,後面...)或類似的東西。

這可能是爲什麼你在ve中看到48個像素的差異兩種情況下的rtical大小。

更多信息

你的代碼似乎是正確的和類似什麼there。您可能還想使用類似於this answer的內容來爲正確版本的Android使用正確的API。

但是,在任何情況下,當它們出現時,您將獲得的大小將不包括具有軟Android按鈕的導航欄。

在HVGA屏幕上運行Android 4.1時,沒有導航欄或組合條(屏幕太小),因此您可以獲得整個屏幕的分辨率。

如果您在較大的屏幕上運行相同的版本,您將看到導航欄,可用於您的應用的顯示尺寸較小,您將只獲得該空間的分辨率。

如果您不清楚,請檢查導航欄等的定義here

+0

在600x1024屏幕上48個像素不同但在480x800屏幕上不是48個像素不同。請幫助我。 – AnilPatel 2013-04-22 06:47:08

+1

在480x800的情況下,它會給你帶來什麼?這些設備正在運行的是哪些Android版本? – Matthieu 2013-04-22 07:17:09

+0

抱歉Matthieu,我錯誤的尺寸類型480X800,但我的cuurent尺寸320X480(HVGA屏幕)沒有得到不同的48像素,但我得到當前的寬度(320)和高度(480)。請幫幫我。 – AnilPatel 2013-04-22 07:26:36

0

上面代碼的屏幕高度不包括底部寬度爲48px的android按鈕(home,back,latest apps)。 因此,您的屏幕高度爲1024-48 = 976.

上面的函數給出了可以看到應用程序的區域。可以將您的應用設置爲全屏應用,這會將通知欄隱藏在頂部,但它仍然不會隱藏底部的android按鈕欄(主屏幕,背面屏幕,最近的應用程序)。所以你可以利用的最大屏幕空間是1024-48 = 976像素。

但是在某些手機中,android按鈕不是屏幕的一部分,在這種情況下,您可以使用整個1024 px的屏幕。