[Android] 화면 회전

유민국·2023년 7월 14일
0

회전에 따른 화면 적용

layout 폴더에 수식어를 추가하면 회전에 따른 화면을 따로 적용할 수 있다.
layout-port : 세로 화면
layout-land : 가로 화면

뷰 복원하기

안드로이드에서 화면 회전이 발생하면 화면을 새롭게 만들게 된다.
이때 일부 UI 요소들은 초기 값으로 설정되기 때문에 복원하는 작업을 해야 한다.
onSaveInstanceState 메서드에서 복원 시 필요한 값을 저장한다.
onCreate 메서드에서 복원 작업을 해준다.

  • editTextView는 화면 회전을 해도 입력한 내용은 남아 있다.

onSaveInstanceState

  • 화면 회전이 발생했을 때 호출되는 메서드(프레그먼트도 동일하다)
  • 매개변수로 들어오는 번들 객체는 화면이 다시 만들어지고 onCreate 메서드를 호출 할 때 매개변수로 전달된다.
  • 여기에는 화면 회전 후 값이 유지되지 않는 View들에 대한 복원 작업을 할 수 있도록 데이터를 저장하는 역할을 한다.
    메서드
override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)

    // 새로운 화면에서 복원해야할 뷰의 값을 저장한다.
    outState.putString("str1", activityManiBinding.textViewResult.text.toString())
}

복원

if(savedInstanceState != null){
    val str1 = savedInstanceState.getString("str1")
    textViewResult.text = str1
}

화면 회전 막기

만약 화면이 회전되는 것을 막고 고정시키고자 한다면 AndroidManifest.xml의 Activity 태그에 screenOrientation 속성으로 설정하면 된다.

profile
안녕하세요 😊

0개의 댓글