2016-06-15 2 views
2

휴대 전화가 HUAWEI NXT-AL10이고 시스템 설정 페이지에서 해상도가 1080 x 1920 인 것을 볼 수 있습니다. 그러나 화면 해상도를 검색 할 때 아래와 같은 코드를 작성하려고하면 값은 1080 x 1794, 아마도 소프트 키보드의 크기는 포함되지 않았을 것입니다. 그렇다면 설정 페이지 (1080 x 1920)처럼 해상도를 어떻게 얻을 수 있습니까?소프트 키보드의 크기를 비롯하여 화면 해상도를 얻는 방법은 무엇입니까?

DisplayMetrics metric = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metric); 
    int width = metric.widthPixels; 
    int height = metric.heightPixels; 

답변

1

아래의 코드는이 API 17 @SimonH의 답변

+0

API 17에서 매우 잘 작동했는데 hav API 16에서 실제 크기를 얻는 방법? – sunjinbo

+0

나는 주말 동안 떨어져 있었고, 당신의 코멘트를 보았습니다. 나는 내 애플 리케이션 중 하나에 대한 메트릭을 제공하기 위해 사용하고있는 코드를 복사했다. 나는 당신의 완전한 응답을 좋아한다. 그러나 API13에서'getHeight'와'getWidth'가 사용되지 않을까요? – SimonH

1

감사합니다 이상이 필요하다는

Point size = new Point(); 
activity.getWindowManager().getDefaultDisplay().getRealSize(size); 
iWidth = size.x; 
iHeight = size.y; 

Log.i(TAG, "Screen real size (pixels) :width = " + iWidth); 
Log.i(TAG, "Screen real size (pixels) :height = " + iHeight); 

참고 찾고있는 무엇을 제공해야하고, 내가 더 많은 로직을 추가 API 16 이하를 지원합니다. 여기서는 참고 용으로 만 제공됩니다.

private void initScreenSize() { 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     Point size = new Point(); 
     getWindowManager().getDefaultDisplay().getRealSize(size); 
     mScreenWidth = size.x; 
     mScreenHeight = size.y; 
    } else { 
     Display display = getWindowManager().getDefaultDisplay(); 

     try { 
      Method getHeight = Display.class.getMethod("getRawHeight"); 
      Method getWidth = Display.class.getMethod("getRawWidth"); 
      mScreenWidth = (Integer) getHeight.invoke(display); 
      mScreenHeight = (Integer) getWidth.invoke(display); 
     } catch (Exception e) { 
      mScreenWidth = display.getWidth(); 
      mScreenHeight = display.getHeight(); 
     } 
    } 
} 
관련 문제