대부분의 앱은 세로모드(portrait)로 고정해서 개발을 하는데, 필요할 때 가로(landscape)로 전환해야 할 때가 있다. 폰의 회전에 따라서 자동으로 바뀌는 것이 아니라 회전과는 무관하게 그냥 가로모드/세로모드를 변경해야 할 때가 있다는 것이다.
1. 자동회전이 아닌, 강제로 가로/세로로 바꾸게 되면 onConfigurationChanged(newConfig: Configuration) 함수가 호출되지 않고 onCreate(savedInstanceState: Bundle?)로 진입되어 화면을 새롭게 그려야 한다. 그렇기 때문에 반드시 android:configChanges="orientation|screenSize" 를 지정해 주어야 한다.
<activity android:name=".YourActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize"
/>
2. 회전되었을 때 onConfigurationChanged로 이벤트가 들어오면 세로/가로에 필요한 코드를 적용한다.
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
when(newConfig.orientation) {
Configuration.ORIENTATION_PORTRAIT -> {
// 세로모드 코드 적용
}
Configuration.ORIENTATION_LANDSCAPE -> {
// 가로모드 코드 적용
}
}
}
3. 강제회전
// 세로모드로 전환
btToPort.setOnClickListener {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
// 가로모드로 전환
btToLand.setOnClickListener {
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
'프로그래밍 > android' 카테고리의 다른 글
[kotlin] for문 다양한 사용법 (0) | 2021.01.12 |
---|---|
[kotlin] 커스텀 리스너(Custom Listener)를 람다(Lamda) 형식으로 사용하기 (0) | 2021.01.08 |
[android] 안드로이드 ImageView gif 적용하기 (feat. Glide) (0) | 2020.12.16 |
[kotlin] 특정 날짜가 속해있는 달에서 '특정 날짜와 같은 요일'의 날짜 구하기 (0) | 2020.12.14 |
[kotlin] 특정 날짜가 속해있는 1주일간의 날짜 범위 (0) | 2020.12.14 |