2016-10-21 2 views
2

Google 애플리케이션에서는 시작시 화면 너비를 결정해야합니다. 우리는 몇 가지 다른 방법 (아래 목록 참조)을 사용하여이 너비를 얻으려고했지만 삼성 기기, 특히 Galaxy 기기가 때때로 잘못된 값을 제공합니다.삼성 기기가 간헐적으로 잘못된 화면 너비를보고합니다.

우리는 1440 x 2560 픽셀의 해상도로 Galaxy s6을 보유하고 있습니다. 대부분의 장치는 1440의 폭을보고하지만 가끔 우리는 다음과 같은 방법으로 폭을 점점 시도 우리에게 1080

의 폭을 줄 것이다 :

1)

getResources().getDisplayMetrics().widthPixels; 

2)

WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
Display display = wm.getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 

3)

WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
Display display = wm.getDefaultDisplay(); 
Point size = new Point(); 
display.getRealSize(size); 

그러나 모든 경우에 잘못된 너비가 반환됩니다. 응용 프로그램을 처음 시작할 때 잘못된 값이 안정적으로 표시됩니다. 어떤 도움이라도 대단히 감사 할 것입니다.

+0

특정 모델의 경우 사전에 크기를 알고 있다면 왜 조회해야하며 조회 테이블이나 다른 종류가 필요하지 않습니까? – PmanAce

+0

예, 우리는 그렇게 할 수는 있지만 엄청난 목록을 유지하는 것은 이상적이지 않습니다. –

+0

예, 저는이 같은 문제가없는 몇 가지 사례에 대해서만 이야기했습니다. 그러나 누군가가 해결책을 찾으면 그것을 사용하십시오.:) – PmanAce

답변

0

시도해 보셨습니까?

DisplayMetrics displayMetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
int screenWidth = metrics.widthPixels; 

UPDATE

그리고 조금 hardcore. here을 더 많이 볼 수 있습니다.

+0

아직이 방법을 시도하지는 않았지만 지금 시도해 보겠습니다. 나는 다른 게시물을 사용했지만 아직 성공하지 못했습니다. –

+0

@ JesseBuss 행운을 빌어 요! –

+0

불행히도 우리는 여전히 그 방법으로 오류를보고 있습니다. –

0

이것은 우리의 getDeviceWidth() 연령대에 대한 방법이며 우리는 결코 문제가 없었지만, 두 번째 버전이라고 생각하십니까?! 확인하고 의견을 말하십시오. (귀하의 의견을 만든 후이 전화를 확인합니다.)

public static int getDeviceWidth(Activity activity) { 

    Display display = activity.getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    return size.x; 
} 

그렇지 않으면 내가 match_parent에 그것의 폭을 설정이있는 더미 레이아웃의 y 위치 (또는 폭)을 얻으려고한다.

그리고 앱이 시작될 때와 시작할 때 (예 : 버튼 클릭시) getWidth를 테스트하십시오. 그것은 런타임도 잘못된 너비를 반환합니까?

+0

예,이 방법은 성공하지 못했습니다. 우리는 애플리케이션의 onCreate()에서이 메소드를 호출합니다. –

+0

너무 빠르지 않습니까? 뷰가 아직 렌더링되지 않기 때문입니다. 이것은 onCreateView에서 발생합니다. 그게 문제가 아닌지 확인하기 위해 런타임 중에 메소드를 호출하는 것이 좋습니다. – longilong

0

제 방법에서는 올바른 위치 또는 Android 화면 크기를 찾지 못했습니다.

내 방법은이 방법이 내 응용 프로그램에 의해 사용중인 경우 내가 확인하는 방법이다 인치의 화면 크기와 화면의 높이와 너비 (픽셀)와 인치 내 응용 프로그램에서

발견 태블릿 :

private void tabletChanges() { 
    DisplayMetrics dm = new DisplayMetrics(); 
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm); 
    int width = dm.widthPixels; 
    int height = dm.heightPixels; 
    int dens = dm.densityDpi; 
    double wi = (double)width/dm.xdpi; 
    double hi = (double)height/dm.ydpi; 
    double x = Math.pow(wi,2); 
    double y = Math.pow(hi,2); 
    double screenInches = Math.sqrt(x+y); 

    if(screenInches >= 7){ 
     //Do certain things 
    } 
} 
관련 문제