2013-11-02 3 views
0

에 대한 화면 크기 지원 요즘 해결할 수없는 난`문제 .. 내가 내 삼성 갤럭시 노트 8.0에서 실행되는 태블릿에 대한 간단한 응용 프로그램을 가지고안드로이드 : 8, 7 인치 화면

이 .. 레이아웃을 일부 장소에 배치하도록 레이아웃을 설정했습니다. xml에 여백을 지정하려면 dp를, 텍스트 크기에는 sp를 사용하여 코드를 작성합니다. 너비와 높이 레이아웃은 wrapcontent로 설정됩니다. 하지만 내 친구 인 Samsung Galaxy Tab 2 7.0에서 실행할 때 레이아웃이 기기에서 보이는 것과 일치하지 않았습니다. 10inch 에뮬레이터에서 실행하려고 할 때도 똑같은 일이 발생합니다.

나는 내 레이아웃 폴더에 대한 사용 레이아웃-sw600dp이 ..

내 화면 레이아웃이 그렇게 왜? 그래도 난 레이아웃 sw600dp 레이아웃을 사용하여 가정으로 .. 자체를 조정 또는 내가 그에 대한 잘못입니까?

Display display = getWindowManager().getDefaultDisplay(); 
      DisplayMetrics outMetrics = new DisplayMetrics(); 
      display.getMetrics(outMetrics); 

      float density = getResources().getDisplayMetrics().density; 
      float dpHeight = outMetrics.heightPixels/density; 
      float dpWidth = outMetrics.widthPixels/density; 

답변

0

모든 장치는 다른 있습니다

나는

내가 사용하여 장치를 dpi 확인했습니다 .. 지금까지 내가 레이아웃 sw600dp 좋은 솔루션입니다 사용하여 찾을 다른 화면 크기 지원과에 대한 안드로이드 문서를 읽고 픽셀 비율, 다른 dpi, 다른 화면 크기 등등. 이 링크로 이동하여 읽으면 다른 장치 레이아웃을 관리하는 방법을 알 수 있습니다. 앱 시작, 당신은 다음과 같은 두 가지 방법으로 인치를 계산할 수 있습니다 때 화면의 인치 크기를 확인하고 싶지만, 내가 생각하는 경우

Android - Supporting Multiple Screen

+0

나는 그것을 몇 번 읽었습니다 .. 나는 .. 나는 다른 크기에 대해 서로 다른 레이아웃을 제공해야 이해하지만 난 정말 내 XML을 I에서? 7, 8 인치 화면에 다른 레이아웃을 제공해야 할 무엇 100dp (예)로 layout_margin을 사용하십시오 .. – iwalyfa

+0

@iwalyfa - 모든 것이 중요합니다. 장치의 dpi,.가 다른지 확인한 다음 다른 레이아웃 폴더가 필요합니다. 픽셀 비율을 확인하십시오. 안드로이드 레이아웃의 경우 모든 것이 중요합니다. –

+0

내 게시물을 편집했습니다 .. 나는 장치 dpi를 확인했습니다 .. 내 경우에는 다른 레이아웃이 필요합니까? 내가 그것에 대해 생각할 때, 그것은 다른 화면 크기에 대한 많은 레이아웃을 제공해야한다는 것을 의미합니다. – iwalyfa

0

은 두 번째는 더 정확하게이다.

public static float getScreenInchSizeByDensityDpi(Context context) { 
    DisplayMetrics dm = context.getResources().getDisplayMetrics(); 
    double x = Math.pow((double)dm.widthPixels/(double)dm.densityDpi, 2); 
    double y = Math.pow((double)dm.heightPixels/(double)dm.densityDpi, 2); 
    double screenInches = Math.sqrt(x + y); 

    return (float) screenInches; 
} 

public static float getScreenInchSizeByXYDpi(Context context) { 
    DisplayMetrics dm = context.getResources().getDisplayMetrics(); 
    double x = Math.pow((double)dm.widthPixels/(double)dm.xdpi, 2); 
    double y = Math.pow((double)dm.heightPixels/(double)dm.ydpi, 2); 
    double screenInches = Math.sqrt(x + y); 

    return (float) screenInches; 
} 
관련 문제