화면회전

2012. 5. 8. 18:37

 

화면 회전

  • 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;
}
  • 참고 문헌


*** 참고 문헌 ***

이 글은 스프링노트에서 작성되었습니다.

'안드로이드' 카테고리의 다른 글

안드로이드 색상표  (0) 2012.05.11
안드로이드 강좌 모음 pdf&동영상 강좌.  (0) 2012.05.11
배경화면꾸미기  (0) 2012.05.08
배경화면꾸미기  (0) 2012.05.08
밑에 메뉴바.  (0) 2012.05.08
Posted by 사라링
BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
VM-WARE (0)
디자인패턴 (1)
스크랩 (0)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
Total :
Today : Yesterday :