2013-08-25 30 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;我仍然需要屏幕的实际尺寸。 –