작업 일지

[Android] 기기 화면을 가로, 세로로 회전 시키기

O_Gyong 2022. 11. 24.
 

[Android] Screen Size로 폰과 태플릿 구분하기

홈 트레이닝 서비스 프로젝트 중에 폰은 세로모드, 태블릿은 가로모드로 고정을 해달라는 요청을 받았다. 현재 사용 중인 기기가 폰인지 태블릿인지를 구하고 가로 또는 세로모드를 고정시켜야

ogyong.tistory.com

이전 글에서 기기 타입에 따라 가로, 세로 화면을 고정시켜야 하는 작업을 해야한다고 했는데,

이번에는 기기 화면을 회전 시키는 것을 해보려고 한다.


기기의 화면을 회전 시키려면 Activity의 requestedOrientation을 업데이트 해야한다.

requestedOrientation(set, get)은 Manifest에서 등록한 가로, 세로 방향 값이나 마지막으로 set한 값을 반환한다.

반환하는 값은 ActivityInfo의 screenOrientation 값이어야 하고, 값을 초기화하지 않으면 -1을 반환한다.

참고 자료

 


ActivityInfo의 screenOrientation 값은 아래와 같다.

• SCREEN_ORIENTATION_PORTRAIT
세로 화면에 대한 상수 값 : 1

• SCREEN_ORIENTATION_LANDSCAPE
가로 화면에 대한 상수 값 : 0

참고 자료


다음으로 현재 화면이 가로인지 세로인지를 판별해야한다.

Configuration의 orientation은 현재 화면의 방향 값을 반환한다.

orientation 값은 Configuration의 ORIENTATION 상수 값으로 설정하면 된다.

• ORIENTATION_PORTRAIT
세로 화면에 대한 상수 값 : 1

• ORIENTATION_LANDSCAPE
가로 화면에 대한 상수 값 : 2

참고 자료


예제로 버튼을 클릭할 때마다 화면을 회전 시켜보려고 한다.

val btn = findViewById<Button>(R.id.btn_main)
btn.setOnClickListener {
    requestedOrientation = if(resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT){
        ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
    }else {
        ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
    }
}

 

현재 화면이 가로인지 세로인지는 Configuration의 orientation으로 확인했고,

상태에 따라 ActivityInfo의 screenOrientation 값을 requestOrientation에 할당했다.

 

전체 코드

댓글