- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[안드로이드] 갤럭시탭을 위해 레이아웃 맞추기 본문
출처 : http://blog.naver.com/notinoti?Redirect=Log&logNo=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] 갤럭시탭을 위해 레이아웃 맞추기|작성자 브리츠
'★─Programing > ☆─Android' 카테고리의 다른 글
[안드로이드] Android: 화면 회전 (Rotation) (0) | 2011.11.04 |
---|---|
[안드로이드] 뷰 크기와 전체 화면 크기 알아내기 (0) | 2011.11.04 |
[안드로이드] Intent를 이용해 데이터 주고 받기 (0) | 2011.11.04 |
[안드로이드] 안드로이드 볼륨 조절 하기 - AudioManager (0) | 2011.11.04 |
[안드로이드] 안드로이드 타이틀바, 인디케이터 삭제 (0) | 2011.11.04 |