티스토리 뷰

반응형

  Android 사용하다보면 화면 회전을 하게 됩니다. 따라서 개발하다보면 화면 회전에 따른 이벤트를 필요하게 되는데 현재 회전 되었는지 확인하는 방식은 다음과 같다.


1. 현재 회전 상태 체크

1
2
3
4
5
if(getWindowManager().getDefaultDisplay().getRotation() == Surface.ROTATION_90) {
    //가로 모드 일 때
}else{
    //세로 모드 일 때
}



기존에는 .getOrientation()  으로 체크하였으나 최근에는 .getRotation()을 사용하고 있습니다. 리스너로 확인 할 수 있습니다.

getWindowManager().getDefaultDisplay().getOrientation()

getWindowManager().getDefaultDisplay().getRotation()


2. 화면 회전 시 리스너

  위의 두 가지를 사용하면 기본적은 안드로이드 회전에 대한 코딩은 가능 할 것입니다. 밑에 코드는 강제 회전하는 코드 입니다.


1
2
3
4
5
6
7
8
9
10
11
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    switch (newConfig.orientation){
        case Configuration.ORIENTATION_LANDSCAPE:
            //가로 모드
        case Configuration.ORIENTATION_PORTRAIT:
            //세로 모드
            break;
    }
}




3. 화면 보여주는 방식 세팅


1) In Code

//가로 모드 세팅

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);


//세로 모드 세팅

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


2) In manifests

android:screenOrientation=

          ["unspecified" | "behind" |

           "landscape" | "portrait" |

           "reverseLandscape" | "reversePortrait" |

           "sensorLandscape" | "sensorPortrait" |

           "userLandscape" | "userPortrait" |

           "sensor" | "fullSensor" | "nosensor" |

           "user" | "fullUser" | "locked"]



4. 정리

  화면 회전 방식은 소스 또는 manifests 에서 설정 가능하며, 상태 체크하여 화면에 따른 다른 이벤트 처리가 가능합니다.




참조 

https://developer.android.com/guide/topics/manifest/activity-element.html?hl=ko


반응형
댓글