[Android] 갤럭시탭을 위해 레이아웃 맞추기 Android / 개발

2010/12/28 14:47

복사 http://blog.naver.com/notinoti/80121268628

어플 개발을 하다보면 갤럭시S기준으로 만들게 되고 나중에 갤럭시 탭에서도 실행해 보았는데

 

화면 레이아웃이 조금씩 어긋나는 경우가 있습니다. 그럴때 다음과 같이 바꾸어서 해보면 어느정도 잡힐것입니다^_^

 

 

 

 

 

1. manifest 파일에 <uses-sdk android:minSdkVersion="7" /> 을 추가합니다. (버전 7이상 권장)

 

그렇지 않으면 화면 가운데로 몰리는 현상이 발생해버리기 때문에 추가해야만 화면크기에 맞게 꽉 차서 나옵니다.

 

 

 

2. http://blog.naver.com/notinoti/80118619288

 

위에서 말한 내용처럼 모든 단위는 dp(간격, 크기), sp(폰트 사이즈) 로 개발합니다.

 

 

 

3. 레이아웃은 Linearlayout 보다 Relativelayout 이 더 좋다고 합니다.

(그러나 대부분이 Linearlayout으로는 다 구현 가능하지만, 안될때에는 Relativelayout으로 바꾸어보자. 사실 Linear를 여러개 겹쳐 쓰는게 가장 쉽긴 합니다^^)

 

 

 

4 위젯의 width는 fill_parent로 정하고 그대신 layout_weight 를 주어 가중치를 조절하여 화면에 배치합니다.

(이것 역시 직접 50dp 같이 숫자로 주어도 무방하나 간혹 깨지는 경우나 만족하지 못하는 구성이 나올때 사용해봅니다.)

 

 

 

 

5. 지금까지 해본 결과 갤럭시탭 해상도 전용의 폴더를 두어 따로 관리하는게 가장 좋습니다!

 

res 폴더안에 기존에 drawable-hdpi 폴더와 layout 폴더이외에 새로 갤럭시 탭 용의

 

drawable-hdpi-1024x600 폴더와 layout-1024x600 폴더를 생성하여 필요한 리소스를 넣으면 됩니다.

 

이 때, 중요한 점은 기존폴더의 모든 리소스를 그대로 복사해도 되지만, 그렇게 하면 어플 용량이 더 많아지게 되므로

 

갤탭에서 조정해야할 필요한 리소스만 복사해와서 따로 수정해 주면 됩니다.

 

나머지 없는 리소스들은 apk 파일로 만들때(빌드) 자동으로 기본 폴더(drawable-hdpi, layout)에서 가져다가 사용하기 때문입니다^^

 

 

그리고 한가지 팁!

 

기존의 기본 이미지를 사용하다보면 스마트폰보다 갤탭이미지가 뭉개지는 경우가 있는데

 

포토샵에서 이미지 크기를 1.25배 늘려서 위에서 말한 drawable-hdpi-1024x600 에 넣어 놓으면 스마트폰과 동일한 이미지 크기의 비율을 얻을수 있습니다^^

 

 

 

6. 그리고 소스상에서 그냥 고치겠다... 라고 한다면 화면 디스플레이의 타입을 직접 계산해서 조절하면 됩니다.

 

화면 디스플레이의 타입을 얻어오는 소스는 다음과 같습니다.

 

 

public static String getDiviceDisplay(){
        Display d = ((WindowManager)getSystemService(this.WINDOW_SERVICE)).getDefaultDisplay();
        int width = d.getWidth();
        int height = d.getHeight();
       
        // HVGA :(320 x 480)
        // WVGA :(480 x 800)
        // WSVGA :(600 x 1024)
       
        // 세로모드
        if(width < height){
            if(width < 480){
                return "HVGA";
            }
            else if(width == 480){
                return "WVGA";
            }
            else{
                return "WSVGA";
            }
        }
        // 가로모드
        else{
            if(height < 480){
                return "HVGA";
            }
            else if(height == 480){
                return "WVGA";
            }
            else{
                return "WSVGA";
            }
        }
    }

 

 

 

HVGA는 저해상도 폰 (옵티머스원),

WVGA는 고해상도 폰 (일반적인 폰, 갤럭시 시리즈 등)

WSVGA는 갤럭시 탭 의 해상도입니다.

 

 

위 소스를 적용해서 레이아웃마다 다르게 하고자 한다면 다음 예제처럼 적용하면 됩니다.

 

 

        RelativeLayout layout = (RelativeLayout)findViewById(R.id.login_widget);
        LinearLayout.LayoutParams param =
                (LinearLayout.LayoutParams)layout.getLayoutParams();
       
        if(CommonUtil.getDiviceDisplay().equals("HVGA")){
            param.topMargin = 130;
            param.bottomMargin = 15;
        }
        else if(CommonUtil.getDiviceDisplay().equals("WVGA")){
            param.topMargin = 225;
            param.bottomMargin = 36;
        }
        else if(CommonUtil.getDiviceDisplay().equals("WSVGA")){
            param.topMargin = 300;
            param.leftMargin = 70;
            param.rightMargin = 70;
            param.bottomMargin = 105;
        }
       
        layout.setLayoutParams(param);

 

'Android > Tip&Tech' 카테고리의 다른 글

Android tip######  (0) 2011.11.09
안드로이드 블루투스 정보모음  (0) 2011.11.07
무선으로 ADB 연결하기(2.2부터)  (0) 2011.10.31
[펌]안드로이드 tipssoft.com 강좌 링크  (0) 2011.10.24
ADB 명령어 정리  (0) 2011.10.22

+ Recent posts