화면 회전 (Rotation)
페이지 정보
작성자 MintState 댓글 0건 조회 11,819회 작성일 11-05-15 20:31본문
화면 회전 (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에 다음을 추가 한다.
* 모든 Activity에 다음을 추가 한다.
화면 회전시 정보를 저장한 후 복구하는 방법
* public void onCreate(Bundle savedInstanceState)에 복구와 관련된 코딩을 한다.
* public void onDestroy()에 화면 종료와 관련된 코딩을 한다.
* public Object onRetainNonConfigurationInstance()에 화면 회전시 데이터를 저장하는 코딩을 한다.
참고 문헌
안드로이드 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
안드로이드 앱을 개발할 때, 가장 복잡하고 까다로운 것은 화면의 회전에 따른 데이터 처리일 것이다.
모바일 앱을 개발하면서 조금씩 정리해 둔 것을 풀어 본다.
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
|
댓글목록
등록된 댓글이 없습니다.