2013-08-25 2 views
2

Android 기기의 화면 크기를 가져오고 싶습니다. 나는 이것을하기 위해이 3 개의 코드를 사용하고 있지만 이것들은 저에게 액티비티의 크기를주고 있습니다; 상태 표시 줄 높이의 크기가 없습니다. 800px 높이의 태블릿에서이 코드는 764 픽셀을 제공합니다. 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

API 레벨 17 이상 당신은 내가이 답변을보고 getRealSize()

https://developer.android.com/reference/android/view/Display.html#getRealSize(android.graphics.Point)

+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를 얻으려면; 여전히 화면의 실제 크기가 필요합니다. –

관련 문제