2012-04-09 4 views
5

내가 개발중인 앱에는 2 개의 레이아웃이 포함되어 있습니다. 하나는 일반 전화 용이고 다른 하나는 NOOKcolor와 같은 작은 태블릿 용입니다. 결정은 화면 너비 해상도 (현재 600dip)를 기반으로합니다. Nook에서 멋지지만 720 x 1280 디스플레이가있는 HTC Rezound에서는 끔찍합니다. 후자에 관계없이 더 높은 해상도에 관계없이 모든 것이 (텍스트, 이미지 등) 훨씬 더 크게 보입니다. 그래서 모든 것이 모아집니다.Android - 작은 태블릿 대 큰 휴대 전화를 감지 하시겠습니까?

올바른 장치를 선택하는 좋은 방법은 무엇입니까? 아마도 물리적 크기 (4.3 "vs 7") 대 해상도를 감지합니까?

+0

가 Configuration.screenLayout 비트 마스크가 예를 들어

/5015094/결정 - 장치 - 화면 카테고리 - 소형 - 일반 - 대형 - 대형 - 사용 코드 – dag

답변

4

다음 메소드를 사용하여 장치의 화면 크기를 감지 할 수 : - 여기에서 볼 http://stackoverflow.com/questions

/** 
    * Checks if the screen size is equal or above given length 
    * @param activity activity screen 
    * @param screen_size diagonal size of screen, for example 7.0 inches 
    * @return True if its equal or above, else false 
    */ 
    public static boolean checkScreenSize(Activity activity, double screen_size) 
    { 
     Display display = activity.getWindowManager().getDefaultDisplay(); 
     DisplayMetrics displayMetrics = new DisplayMetrics(); 
     display.getMetrics(displayMetrics); 

     int width = displayMetrics.widthPixels/displayMetrics.densityDpi; 
     int height = displayMetrics.heightPixels/displayMetrics.densityDpi; 

     double screenDiagonal = Math.sqrt(width * width + height * height); 
     return (screenDiagonal >= screen_size); 
    } 
+0

아하! 밀도가 핵심입니다! 고마워, 이건 작동하는 것 같다 – Bostone

+0

무엇 ?? 입력 매개 변수로 7.0을 넣었고, Kindle Fire에 false를 반환합니다. –

+0

이상한데, 왜냐하면 나는 내 장치에서 테스트를했기 때문에 완벽하게 작동합니다. * return * 전에'screenDiagonal'을 로깅 해보고 실제로 당신 디바이스에 대해 계산 한 것을 확인하십시오. – waqaslam

1

Supporting Multiple Screens에 대한 설명서를 확인하십시오. Android가 다양한 화면 크기/밀도에 대해 다양한 레이아웃과 드로어 블을로드 할 수 있도록 미리 지정된 폴더 명명 구조를 따를 수 있습니다.

res/layout/my_layout.xml    // layout for normal screen size ("default") 
res/layout-small/my_layout.xml  // layout for small screen size 
res/layout-large/my_layout.xml  // layout for large screen size 
res/layout-xlarge/my_layout.xml  // layout for extra large screen size 
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

res/drawable-mdpi/my_icon.png  // bitmap for medium density 
res/drawable-hdpi/my_icon.png  // bitmap for high density 
res/drawable-xhdpi/my_icon.png  // bitmap for extra high density 
+0

사전 벌집에 대한 이것은 다소 쓸모가 없다 – Bostone

관련 문제