[안드로이드] 안드로이드스튜디오(Android Studio) 액티비티(Activity) 화면모드(landscape, portrait) 변경 시 상태 유지하기 및 화면 모드 고정하기, 안드로이드 예제, 안드로이드 강좌
참고 : 이미지서명은 제 와이프 블로그 이미지서명입니다.
안녕하세요 정보처리마법사입니다.
이번 포스팅의 주제는 화면모드 변경 시 상태 유지하기 및 화면 모드 고정하기 입니다.
화면 모드가 변경이 되면 onCreate() 메소드가 새로 호출이 됩니다. 이로인해 기존에 사용하던 환경이 초기화 되는 경우가 생기는 걸 미연에 방지하기 위해서는 onCreate() 메소드가 호출되기 전에 값을 저장해서 이 값을 추후에 복구해서 화면을 설정하면 됩니다.
일단 activity_main.xml 파일을 이렇게 작성한 상태에서 실행을 하면
이렇게 화면에 보이게 됩니다. 저기 파란 네모와 오른쪽 작은 글씨들은 디버깅모드라서 보이는 것이니 신경 안쓰셔도 됩니다. VM(가상머신)은 실행하는 데 시간이 좀 많이 걸려서 아주 예전에 사용하던 베가레이서(vega racer)를 디버깅용으로 사용하였습니다. 개인적으로 베가레이서1 은 잔고장 없이 아주 오랫동안 잘 사용했습니다. 참 잘 만든 것 같습니다. 일단 아무 기능없기 때문에 현재 상태로는 가로로 눕혀도 텍스트는 그대로 "안녕하세요 세로방향입니다." 가 표시 될 것 입니다.
먼저 좀 있다가 MainActivity.java 파일에서 TextView를 findViewById 메소드를 사용하여 찾을 것이므로 위 이미지 처럼 TextView에 android:id="@+id/textView" 이렇게 아이디를 설정해줍니다.
onSaveInstanceState()메소드는 화면 모드가 변경되기 전에 호출되는 메소드입니다. 이때 사용할 수 있는 객체는 Bundle객체이며, 안드로이드 내부에서 키/값 형식으로 데이터를 저장할 수 있도록 제공하고 있는 객체입니다. 그리고 여기에 저장된 값을 화면에 다시 꺼낼 수 있는 메소드는 onCreate()메소드와 onRestoreInstanceState()메소드가 있습니다. 이 두 메소드에 전달되는 Bundle 객체를 사용하면 onSaveInstanceState()메소드에서 저장된 값을 꺼내서 사용할 수 있습니다.
그리고 나서 위 두 이미지 처럼 코딩을 한 후 실행을 하면
첫 실행화면은 "안녕하세요 세로방향입니다." 가 TextView에 출력 되었다가 디바이스를 가로로 눕히면 "안녕하세요 가로방향입니다."가 TextView에 출력이 됩니다. 대충 이런 식으로 사용하시면 되겠습니다.
참고로 소스코드에 다른 지금 디바이스 상태파악 등의 기능을 넣지 않았으므로 저 소스코드 그대로 실행을 한다면 디바이스를 다시 세로로 돌린다 하여도 TextView에는 "안녕하세요 가로방향입니다." 가 출력되는 게 정상입니다. 그리고 onCreate()메소드는 액티비티 생명주기에 포함되는 메소드이지만 onSaveInstanceState()메소드와 onRestoreInstanceState()메소드는 생명주기 메소드는 아니지만 매우 중요한 메소드이므로 알아 두시면 좋습니다.
그리고 액티비티(activity) 화면 모드를 고정하는 방법은
AndroidManifest.xml 파일을 열어서
위 이미지와 같이 <Activity> 안에 android:screenOrientation="portrait" 이런 식으로 속성을 지정하면 됩니다. 세로모드로 고정시에는 "portrait" 가로모드로 고정시에는 "landscape"로 하시면 됩니다.
이 속성은 액티비티마다 각각 지정할 수 있습니다.
이상으로 포스팅을 마칩니다. 감사합니다.
참고서적 : 200개의 단계별 예제로 배우는 안드로이드 4.0 [제이펍]
Fin.
잘 못 된 정보가 있으면 말씀해주세요~
공감버튼 클릭은 작성자에게 큰 힘이 됩니다. 행복한 하루 되세요.