본문 바로가기

Development Note/JAVA

[안드로이드] 액티비티 화면을 가로, 혹은 세로로 고정하기


 안드로이드 앱을 개발하다 보면 부득이하게 액티비티 화면을 가로, 혹은 세로로 고정해야 할 때가 있습니다. 예를 들자면 게임의 경우는 대부분 가로모드로 고정이 되어 실행되죠. 물론 액티비티 화면을 세로 모드로 고정해야 할 때도 있습니다. 화면의 레이아웃이 가로, 혹은 세로 모드에 최적화되어 있는 경우에는 부득이하게 화면의 회전을 강제로 막아야만 합니다.

 가로 모드는 Landscape, 세로 모드는 Portrait가 정식 명칭입니다. 안드로이드 액티비티의 화면을 Landscape 혹은 Portrait로 고정하고 싶은 경우, 두 가지 방법이 있습니다. 첫번째는 Manifest 파일에서 Activity에 screenOrientation 속성을 주는 방법이고, 두번째는 안드로이드 액티비티의 onCreate() 메소드 내에서 코드로 화면 오리엔테이션을 지정해주는 방법입니다.



 먼저 첫 번째로, Android Manifest 파일에 속성을 지정하는 방법입니다. 먼저 원하는 안드로이드 프로젝트의 AndroidManifest.xml 파일을 엽니다. 그리고 화면을 고정하기 원하는 액티비티의 이름을 찾아 아래 코드의 3번째(혹은 4번째) 열에 해당하는 코드를 추가합니다.



        
<activity android:name="com.example.appname.ActivityName"
            android:theme="@style/AppTheme"
            android:screenOrientation="portrait" //화면을 portrait(세로) 화면으로 고정하고 싶은 경우
            android:screenOrientation="landscape"> //화면을 landscape(가로) 화면으로 고정하고 싶은 경우
        </activity>



 두 번째로, 액티비티 실행 시에 onCreate() 메소드 내부에서 지정해주는 방법입니다. 원하는 안드로이드 프로젝트의 해당 액티비티를 열어서 아래 코드의 6열(8열)에 해당하는 코드를 추가해 줍니다.


@Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        // 화면을 portrait(세로) 화면으로 고정하고 싶은 경우
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        // 화면을 landscape(가로) 화면으로 고정하고 싶은 경우
        
        setContentView(R.layout.main);
        // setContentView()가 호출되기 전에 setRequestedOrientation()이 호출되어야 함
    }


이제 해당 프로젝트를 실행하면 지정한 액티비티의 화면이 회전하지 않는 것을 볼 수 있습니다.