YesYo.com MintState Forums  
뒤로    YesYo.com MintState BBS > Tech > Android
검색
멤버이름  오토
비밀번호 
 

 
작성일 : 11-05-15 20:31
화면 회전 (Rotation)
 글쓴이 : MintState
조회 : 5,802  
화면 회전 (Rotation)

안드로이드 앱을 개발할 때, 가장 복잡하고 까다로운 것은 화면의 회전에 따른 데이터 처리일 것이다.
모바일 앱을 개발하면서 조금씩 정리해 둔 것을 풀어 본다.

Resource에서 화면(layout) 정의
세로 화면 : /res/layout-port/~.xml
가로 화면 : /res/layout-land/~.xml

회전 상태 확인
* Android 2.1

* Android 2.2


화면 회전 금지 방법 1
AndroidManifest.xml에서 모든 Activity에 다음을 추가 한다.


화면 회전 금지 방법 2

 
화면이 회전해도 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;
}


참고 문헌
안드로이드 UI 디자인 패턴, 2010.5.19 by Google
Icon Design Guidelines, Android 2.0
Supporting Multiple Screens, 2010.5
화면 회전을 빠르게 처리하기 (Faster Screen Orientation Change), 2010.6
오픈소스 비즈니스 컨설팅 - Android
오픈소스 비즈니스 컨설팅 - Android SDK

출처 : http://www.jopenbusiness.com/tc/oss/282
Rated 5.0/5 (100%) (1 Votes)

(\__/)
(='.'=)
(")_(")~
Search Infomation by MintState
MintState

 
 

Total 18
번호 제   목 글쓴이 날짜 조회
18 apktool을 이용하여 APK 파일 다루기 MintState 11-01 4890
17 BitmapDrawable과 Bitmap MintState 06-09 5224
16 Android Bitmap Object Resizing Tip MintState 06-09 4491
15 Android XML Parsing Tutorial - Using SAXParser MintState 06-07 4438
14 Android XML Parsing Tutorial – Using DOMParser MintState 06-07 4905
13 Splash(로딩) 화면 표시 MintState 05-31 5614
12 WebView 로딩중 에만 ProgressBar 진행상태 표시 MintState 05-16 6354
11 화면 회전 (Rotation) MintState 05-15 5803
10 WebView 로딩 메시지 표시 MintState 05-13 5533
9 WebView 사용시 Javascript Alert, Confirm 출력 MintState 05-11 5832
8 WebView 에서 tel: 인식 MintState 05-11 4576
7 구글 맵 API Key 발급 MintState 04-27 4987
6 Android <-> WebView 간 호출하기 MintState 04-21 5590
5 여러 크기의 폰에 따른 레이아웃 설정 (1) MintState 04-20 4986
4 Http Post 방식으로 웹서버와 자료를 주고받는 예제 MintState 04-03 5311
3 HttpPost (POST 방식으로 파라메터 넘기기) MintState 03-31 5790
2 [PDF] Android UI Design Patterns MintState 03-31 4422
1 android 웹서비스 구현하기 참조 문서 MintState 03-31 6501
모바일 버전으로 보기
CopyRight ©2004 - 2018, YesYo.com MintState. ™