- 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 |
Link
- 재능이의 돈버는 일기
- 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
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[안드로이드] Android: 화면 회전 (Rotation) 본문
안드로이드 앱을 개발할 때, 가장 복잡하고 까다로운 것은 화면의 회전에 따른 데이터 처리일 것이다. 모바일 앱을 개발하면서 조금씩 정리해 둔 것을 풀어 본다.
*** 참고 문헌 ***
[출처] http://www.jopenbusiness.com/tc/oss/entry/Android-%ED%99%94%EB%A9%B4-%ED%9A%8C%EC%A0%84-Rotation
화면 회전
- Resource에서 화면(layout) 정의
-
- 세로 화면 : /res/layout-port/~.xml
- 가로 화면 : /res/layout-land/~.xml
- 회전 상태 확인
-
- Android 2.1
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
//--- orientation : 0. 세로, 1. 가로
int orientation = display.getOrientation();
-
- Android 2.2
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
//--- Surface.ROTATION_0 : 세로
//--- Surface.ROTATION_90 : 가로
//--- Surface.ROTATION_180 : 세로
//--- Surface.ROTATION_270 : 가로
int rotation = display.getRotation();
- 화면 회전 금지 방법 1
-
- AndroidManifest.xml에서 모든 Activity에 다음을 추가 한다.
android:screenOrientation="portrait" //--- 세로 화면 고정
android:screenOrientation="landscape" //--- 가로 화면 고정
- 화면 회전 금지 방법 2
//--- public void onCreate(Bundle savedInstanceState) 함수에서 //--- setContentView(~); 다음에 아래 라인을 추가 한다.
//--- 세로 화면 고정
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//--- 가로 화면 고정
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
- 화면이 회전해도 Activity가 다시 로딩되지 않도록 하는 방법
-
- Activity가 다시 로딩되지 않으므로 화면의 크기는 변하지 않는다. 따라서 수작업으로 화면을 조정해 주어야 한다.
- AndroidManifest.xml에서 모든 Activity에 다음을 추가 한다.
android:configChanges="keyboardHidden|orientation"
-
- 모든 Activity에 다음을 추가 한다.
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); switch(newConfig.orientation) { case Configuration.ORIENTATION_PORTRAIT:
//--- 수작업으로 세로 화면 생성 break; case Configuration.ORIENTATION_LANDSCAPE:
//--- 수작업으로 가로 화면 생성 break; } }
- 화면 회전시 정보를 저장한 후 복구하는 방법
-
- public void onCreate(Bundle savedInstanceState)에 복구와 관련된 코딩을 한다.
Object obj = getLastNonConfigurationInstance()
if (obj != null) {
HashMap<String, Object> map = (HashMap<String, Object>) obj;
//--- 저장된 복구 데이터로 화면 또는 Thread를 복구 한다.
}
-
- public void onDestroy()에 화면 종료와 관련된 코딩을 한다.
public void onDestroy() {
if (isFinishing()) {
//--- 화면이 종료될 때, Thread 처리 등을 한다.
//--- worker.interrupt();
//--- worker = null;
} else {
//--- 화면이 회전할 때
}
super.onDestroy();
}
-
- public Object onRetainNonConfigurationInstance()에 화면 회전시 데이터를 저장하는 코딩을 한다.
public Object onRetainNonConfigurationInstance() {
HashMap<String, Object> map = null;
map = new HashMap<String, Object>();
//--- 화면 또는 Thread에서 복구할 데이터를 저장 한다.
return map;
}
- 참고 문헌
*** 참고 문헌 ***
[출처] http://www.jopenbusiness.com/tc/oss/entry/Android-%ED%99%94%EB%A9%B4-%ED%9A%8C%EC%A0%84-Rotation
'★─Programing > ☆─Android' 카테고리의 다른 글
[안드로이드] MFC 개발자를 위한 안드로이드 애플리케이션 개발 기초 (0) | 2011.11.07 |
---|---|
[안드로이드] 인터넷 연결 (HttpComponents) (1) | 2011.11.04 |
[안드로이드] 뷰 크기와 전체 화면 크기 알아내기 (0) | 2011.11.04 |
[안드로이드] 갤럭시탭을 위해 레이아웃 맞추기 (0) | 2011.11.04 |
[안드로이드] Intent를 이용해 데이터 주고 받기 (0) | 2011.11.04 |
Comments