2013-08-25 33 views
2

我想獲取Android設備的屏幕大小。我使用這3個代碼來做到這一點,但這些代碼給了我活動的大小;這是沒有狀態欄高度的大小。 在800px高度的平板電腦上,此代碼提供764px。 36px進入底部的狀態欄。Android的全屏大小

Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    final int width = size.x; 
    final int height = size.y; 



    Rect rectgle= new Rect(); 
    Window window= getWindow(); 
    window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
    int height2= rectgle.bottom; 



    DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    int actualHeight = metrics.heightPixels; 

但我需要一個代碼,它給我屏幕的實際大小。不是活動的。誰能幫我解決這個問題 謝謝。

回答

2
+1

這有點不好,但實際上我不明白我怎麼能在我的課堂上創建一個Display對象?沒有構造函數。 –

+0

您可以通過此窗口管理器收集顯示對象 Display display = getWindowManager()。getDefaultDisplay(); –

+0

是的。我在你的答案前10秒找到了=)是的。現在完成了。謝謝。 –

1

這段代碼會給你狀態欄的高度。

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 
int contentViewTop= 
window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
int TitleBarHeight= contentViewTop - StatusBarHeight; 

所以屏幕的總高度爲: -

height = height+TitleBarHeight; 

原來的答案是here。另外請注意,這不會在onCreate中將該代碼放入可運行狀態。

+0

我看到這個答案。問題是這樣的:設備是一個平板電腦,而不是電話。所以狀態欄位於底部,而不是頂部。此代碼爲StatusBarHeight提供了0px。當我將** int StatusBarHeight = rectgle.top; **代碼更改爲** int StatusBarHeight = rectgle.bottom; **現在我得到了activityHeight。這是764px。所以得到StatusBarHeight;我仍然需要屏幕的實際尺寸。 –