마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 dp 해상도 관련 질문과 태블릿 해상도 호환

0 추천
안드로이드 어플을 만들고 있습니다.

dp 를 이용해서 버튼사이즈나 뷰의 크기를 지정했습니다.

제가 dp 에 대해 간단하게 밖에 이해하지 못했는데

dp 로 스마트폰의 가로 또는 세로를 꽉채울수있는 dp 값을 어떻게 구하죠 ? ?

제가 만든 어플이 태블릿에서는 뷰들이 뒤죽박죽으로 이상한곳에 위치하더라구요.

레이아웃 만들때 해상도 관련해서 위 질문에 대해 답편해주시면 감사합니다.
Hir00 (740 포인트) 님이 2014년 12월 18일 질문

3개의 답변

0 추천
dp 로 가로 넓이를 꽉 채우지 못합니다
자바단에서 디바이스 넓이를 계산해서 사용하든지
match_parent 를 사용하든지
기기해상도에 맞춰서 dimen 를 입력하든지
하셔야 합니다
mamondebaltob (32,750 포인트) 님이 2014년 12월 18일 답변
0 추천

해상도 글 참조하세요.

http://gyjmobile.tistory.com/entry/%EB%8B%A8%EB%A7%90%EA%B8%B0-%ED%95%B4%EC%83%81%EB%8F%84%EC%97%90-%EA%B4%80%EA%B3%84%EC%97%86%EC%9D%B4-%ED%95%AD%EC%83%81-%EA%B0%99%EC%9D%80-%ED%81%AC%EA%B8%B0%EB%A1%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-%EB%B3%B4%EC%97%AC%EC%A3%BC%EA%B3%A0-%EC%8B%B6%EC%9D%84%EB%95%8C

 

이건 테블릿 판단하는 함수

 

 protected boolean isTablet()
   {
       int portrait_width_pixel = Math.min(this.getResources().getDisplayMetrics().widthPixels, this.getResources().getDisplayMetrics().heightPixels);
       int dots_per_virtual_inch = this.getResources().getDisplayMetrics().densityDpi;
       float virutal_width_inch = portrait_width_pixel / dots_per_virtual_inch;
        
       return (virutal_width_inch > 2);
   }
 
저 같은 경우는 이거 두가지 사용해서 해상도 맞춰가고있습니다. 
CJ여비 (5,730 포인트) 님이 2014년 12월 19일 답변
0 추천
애초에 처음 레이아웃 구성할때

LinearLayout의 weightSum을 이용해서 가중치로 구성하시면 태블릿이든 스마트폰이든 잘 나옵니다

 
직접적인 width나 height값을 주지 않고 weight로 비율 정렬 하는 거죠.

 
텍스트 사이즈나 굳이 직접적으로 사이즈를 줘야 하는 경우는dimen을 이용하세요.

 

스마트폰의 dp가 1이라면

7인치대 태블릿은 1.5

10인치대 태블릿은 2.0으로 계산하시면 잘 나옵니다

 
회사에 테스트 디바이스가 꽤 많은데

이런 식으로 구성하면 한방에 모든 디바이스 최적화가 됩니다.

소프트키든 뭐든 상관없이요.

 

LinearLayout의 vertical, horizontal

중간중간 꼽사리 껴야 하는 애매한 뷰는 FrameLayout으로 덮어주는 방식으로

구성 못 하는 UI는 많지 않을 걸요.,
익명사용자 (5,930 포인트) 님이 2014년 12월 19일 답변
익명사용자님이 2014년 12월 19일 수정
...