Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Android 앱에서 화면 방향 변경 비활성화하는 방법

이 글에서는 Android 애플리케이션에서 화면 방향(가로/세로) 변경을 비활성화하여 항상 고정된 방향으로 화면이 유지되도록 만드는 방법을 단계별로 살펴봅니다. 화면 회전으로 인해 액티비티가 재생성되면서 데이터가 초기화되거나 UI가 깨지는 문제를 방지하고 싶을 때 유용하게 활용할 수 있습니다.

구현 순서 한눈에 보기

  • Android Studio에서 새 프로젝트 생성
  • 레이아웃 파일(activity_main.xml) 작성
  • MainActivity.java에서 화면 방향 고정 코드 추가
  • AndroidManifest.xml에서 screenOrientation 속성 설정

1단계 — 새 프로젝트 만들기

Android Studio를 실행한 뒤 File → New Project 메뉴로 이동하여 새 프로젝트를 생성합니다. 이때 필요한 프로젝트 이름, 패키지명, 최소 SDK 버전 등의 세부 정보를 모두 입력해 주세요.

2단계 — 레이아웃 파일(activity_main.xml) 작성

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다. 화면 중앙에 안내 문구를 표시하는 간단한 TextView 하나를 배치한 구조입니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity"
    android:background="#ecdcf1">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Portrait mode has been disabled!"
        android:textStyle="bold"
        android:textColor="@color/colorPrimary"
        android:layout_centerVertical="true"/>
</RelativeLayout>

3단계 — MainActivity.java에 방향 고정 코드 추가

src/MainActivity.java 파일의 onCreate() 메서드 내부에서 setRequestedOrientation() 메서드를 호출하면 코드 수준에서 화면 방향을 강제로 지정할 수 있습니다.

import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        setContentView(R.layout.activity_main);
    }
}

참고: ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE는 가로 모드로 고정하고, 반대로 세로 모드로 고정하려면 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT를 사용하면 됩니다.

4단계 — AndroidManifest.xml에서 screenOrientation 설정

매니페스트 파일에서 해당 액티비티 태그에 android:screenOrientation 속성을 추가하는 방법도 있습니다. 이 방식은 코드 수정 없이 XML 설정만으로 방향을 고정할 수 있어 더욱 간편합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <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="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 스마트폰이 컴퓨터와 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 상단 툴바의 Run(실행) 아이콘을 클릭하세요. 실행 대상 기기 목록에서 본인의 모바일 기기를 선택하면, 기기 화면에 아래와 같이 방향이 고정된 기본 화면이 나타나는 것을 확인할 수 있습니다.

Android 앱에서 화면 방향 변경 비활성화하는 방법

마무리 정리

화면 방향 변경을 비활성화하는 방법은 크게 두 가지입니다. 첫째, MainActivity의 onCreate()에서 setRequestedOrientation()을 호출하는 방법이고, 둘째, AndroidManifest.xml의 액티비티 속성에 android:screenOrientation 값을 지정하는 방법입니다. 두 방법 중 상황에 맞는 것을 선택해 적용하면 기기 회전과 무관하게 일관된 화면 방향을 유지할 수 있습니다.