2012-12-06 172 views
1

什麼是性差異愨使用下面的代碼,以獲得屏幕寬度和高度的android:錯誤的屏幕寬度和高度

public HorseView(Context context) { 
     super(context); 
    DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
    int height = metrics.heightPixels; 
............. 
} 

,並使用另一個這樣的:

public void surfaceCreated(SurfaceHolder holder) { 
    thread.setRunning(true); 
    thread.start(); 
    int height = this.getHeight(); 
} 

誰知道爲什麼在第一種情況下,高度設置爲508;第二種情況是533;

在此先感謝。

回答

0

仿真器或設備具有diferent密度:

  • LDPI = 0.75,
  • MDPI = 1,
  • HDPI = 1.5,
  • xhdpi = 2

狀態小節圖標的高度爲25dp(mdpi)。對於所有密度,條高:25 *(ldpi = .75,mdpi = 1,hdpi = 1.5,xhdpi = 2)=(19px,25px,38px,50px)。

我們可以使用25dp爲基礎,並通過密度(四捨五入)相乘得到任何設備上的狀態欄的高度:如果你

int statusBarHeight = (int) Math.ceil(25 * context.getResources().getDisplayMetrics().density); 

最後,尺寸,使得應用程序可以使用,有上下文,是:

int heightAreaWork = context.getResources().getDisplayMetrics().heightPixels - statusBarHeight; 
0

試試吧。

Display display = getWindowManager().getDefaultDisplay(); 
    int height=display.getHeight(); 
       int width=display.getWidth(); 
+0

我打電話給一個活動之外。 getWindowManager()在那裏不起作用。 –

3
  • 533 * 1.5 = 800。
  • 508 * 1.5 = 762。

兩個值之間的差異是因爲通知欄的高度,這是38px高度的。

+0

只是爲了闡述。一種是測量屏幕尺寸。而另一個則是測量某物的表面大小。不是一回事。 – Doomsknight