2014-03-04 3 views
0

나는 안드로이드 응용 프로그램 (API를 11 +) 개발하고 있어요 대 전화와 나는 여러 화면 크기와 밀도를 지원하려는 나의 프로젝트는 당김 자원 (MDPI, hdpi에, xhdpi 및 xxhdpi를 제공하기 위해 서로 다른 밀도 폴더가) 및 한정자가있는 다른 레이아웃 폴더 (작음, 보통, 크고 xlarge)가 있습니다. 구글 문서 도구에서안드로이드 레이아웃 MDPI 태블릿

는 :

xlarge screens are at least 960dp x 720dp 
large screens are at least 640dp x 480dp 
normal screens are at least 470dp x 320dp 
small screens are at least 426dp x 320dp 

본인은 "DP"단위를 이해하고 있다고 생각합니다. 내가 틀리지 않다면 480x800px mdpi 전화 화면은 480x800dp 단위를 가지고 있습니다. 왜냐하면 mdpi 장치에서는 1px = 1dp이므로이 화면이 커야합니다. 크기와 밀도가 동일한 태블릿이 너무 큽니다.

어떻게이 두 장치에 다른 레이아웃을 제공 할 수 있습니까? 어떻게 구별 할 수 있습니까?

답변

0

드로어 블을위한 다른 폴더가 같은 방법으로, 당신은 화면 크기에 대해 서로 다른 레이아웃을 만들 수 있습니다. 안드로이드 문서에서

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 

: http://developer.android.com/guide/practices/screens_support.html

편집 : 프로그래밍 방식이 코드를 사용하여 장치가 휴대폰이나 태블릿 여부를 감지하려면 : 다음

public static boolean isTablet(Context context) { 
    return (context.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
} 

을, 귀하의 활동에서 이전 값에 따라 다른 레이아웃을 설정할 수 있습니다 :

@Override 
onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    if isTablet(this) 
     setContentView(R.layout.handset_main_layout); 
    else 
     setContentView(R.layout.tablet_maint_layout); 
} 

이것은 단지 예입니다.

+0

감사합니다, 나는 크기 예선과 다른 폴더가, 문제가, 장치가 "정상", "작은"내가 만약이 정확히 어떻게 안드로이드 점검을 이해하지 못하는 것입니다 "큰" 또는 "xlarge", 문서와 같은 화면 dp 크기를 기반으로하는 경우 "대형 화면이 최소 640dp x 480dp"이기 때문에 480x800 mdpi 전화 및 480x800 mdpi 태블릿은 "대용량"이지만 나는 다른 레이아웃을 원합니다. 핸드셋 및 태블릿 – Istigar

+0

내 대답을 업데이트했습니다. – Manitoba

0

당신은 아무것도에 대한 픽셀을 사용하고 LDPI, MDPI, xdpi의 다른 자산을 제공하지 않으면 ... 당신이 먼 길을 얻을 것이다. 시스템은 특정 장치에 사용할 레이아웃 파일과 자산을 결정합니다.

0

그것은 가능성이, 당신이 무엇에 관해 얘기하는지 그 MDPI 장치는 상당히 큽니다. 태블릿만큼이나. 하지만 이러한 불균형 때문에 (다른 기기가 크기/dpi 값을 잘못보고했기 때문에) Android는 다른 접근 방식을 고안하기로 결정했습니다. 당신이 안드로이드 만 (11 ~ 12의 시장 점유율은 약 0 %이기 때문에, 합리적인이다), 당신은 swXXXdp (DP에서 가장 작은 폭) 필터를 사용할 수있는 13 세 이상 대상으로 재고 할 수있는 경우 :

res/layout-mdpi/content.xml   for phones and phablets 
    res/layout-sw600dp-mdpi/content.xml for 7" tablet 
    res/layout-sw720dp-mdpi/content.xml for 10" tablet and above 

을 그리고 dpi 값은 여기서 중요하지 않습니다. 그 이미지를 더 선명하고 세련되게 보이게하려는 경우. 내가 질문에 말했듯이 답변에 대한

관련 문제