Development/Android
안드로이드 가로모드(혹은 세로모드) 고정하는 방법.
Jamie
2020. 9. 5. 21:17
반응형
안드로이드에서 가로모드 혹은 세로모드로 액티비티를 고정해야할일이 있습니다. 다음과 같은 방법을 사용합니다.
1. AndroidManifest.xml에 Activity Tag에 고정
- activity에 screenOrientation 속성에 값을 넣어서 모드를 처리.
- android:screenOrientation="landscape"
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
다음과 같은 속성값을 지정할 수 있습니다. 안드로이드 developers의 가이드를 참고하면 됩니다.
developer.android.com/guide/topics/manifest/activity-element
android:screenOrientation=["unspecified" | "behind" |
"landscape" | "portrait" |
"reverseLandscape" | "reversePortrait" |
"sensorLandscape" | "sensorPortrait" |
"userLandscape" | "userPortrait" |
"sensor" | "fullSensor" | "nosensor" |
"user" | "fullUser" | "locked"]
"unspecified" | 기본값입니다. 시스템이 방향을 선택합니다. 시스템이 사용하는 정책과 특정 컨텍스트에서 이루어지는 선택은 기기마다 다를 수 있습니다. |
"behind" | 액티비티 스택에서 바로 아래에 있는 액티비티와 동일한 방향입니다. |
"landscape" | 가로 방향입니다(디스플레이의 높이보다 너비가 더 긺). |
"portrait" | 세로 방향입니다(디스플레이의 너비보다 높이가 더 긺). |
"reverseLandscape" | 정상적인 가로 방향에서 반대 방향인 가로 방향입니다. API 레벨 9에서 추가되었습니다. |
"reversePortrait" | 정상적인 세로 방향에서 반대 방향인 세로 방향입니다. API 레벨 9에서 추가되었습니다. |
"sensorLandscape" | 기기 센서에 따라 정상적인 가로 방향 또는 반전된 가로 방향이 될 수 있습니다. 사용자가 센서 기반 회전을 잠갔더라도 센서가 사용됩니다. API 레벨 9에서 추가되었습니다. |
"sensorPortrait" | 기기 센서에 따라 정상적인 세로 방향 또는 반전된 세로 방향이 될 수 있습니다. 사용자가 센서 기반 회전을 잠갔더라도 센서가 사용됩니다. API 레벨 9에서 추가되었습니다. |
"userLandscape" | 기기 센서 및 사용자의 기본 설정에 따라 정상적인 가로 방향 또는 반전된 가로 방향이 될 수 있습니다. API 레벨 18에서 추가되었습니다. |
"userPortrait" | 기기 센서 및 사용자의 기본 설정에 따라 정상적인 세로 방향 또는 반전된 세로 방향이 될 수 있습니다. API 레벨 18에서 추가되었습니다. |
"sensor" | 기기 방향 센서가 방향을 결정합니다. 디스플레이 방향은 사용자가 기기를 잡고 있는 방법에 따라 다르며 사용자가 기기를 회전할 때 변경됩니다. 그러나 일부 기기는 기본적으로 4개의 모든 방향으로 회전하지 않습니다. 4개의 모든 방향을 허용하려면 "fullSensor"를 사용합니다. 사용자가 센서 기반 회전을 잠근 상태라도 센서가 사용됩니다. |
"fullSensor" | 기기 방향 센서가 4개의 방향을 결정합니다. 이는 4개의 화면 방향을 허용한다는 것을 제외하면 기기가 정상적으로 수행하는 것과 상관없이 "sensor"와 유사합니다. (예를 들어, 일부 기기는 세로 반전 또는 가로 반전을 정상적으로 사용하지 않지만 이 특성은 정상적으로 사용합니다.) API 레벨 9에서 추가되었습니다. |
"nosensor" | 물리적 방향 센서를 참조하지 않고 방향을 결정합니다. 센서가 무시되므로 사용자가 기기를 이동하는 방법에 따라 디스플레이가 회전하지 않습니다. |
"user" | 사용자의 현재 기본 설정 방향입니다. |
"fullUser" | 사용자가 센서 기반 회전을 잠금 설정한 경우 user와 동일하게 작동하고, 잠금 설정을 하지 않은 경우 fullSensor와 동일하게 작동하며 4개의 화면 방향을 허용합니다. API 레벨 18에서 추가되었습니다. |
"locked" | 현재 회전 방향을 잠금 설정합니다. API 레벨 18에서 추가되었습니다. |
2. 코드에서 처리하기
Activity에서 onCreate시에 메서드를 호출하면 됩니다.
ActivityInfo에 정의된 상수는 위의 속성값과 동일하게 사용가능합니다.
Java일경우
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// setOrientation Activity
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
// Application code here..
}
Kotlin일경우
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
}
반응형