앱 만들기/안드로이드 study

안드로이드 가로 세로 화면 고정하기.

나도처음이야 2020. 4. 6.
반응형

앱을 만들 때 폰의 방향을 바꾸어도, 가로/세로 한 방향으로만 UI 화면이 고정되도록 설계하는 경우가 있다.

굳이 양방향으로 보여줄 필요가 없을 때 말이다.  그럼 하기처럼 동작한다.

방향을 돌려도 화면이 가로 방향으로 바뀌지 않는다.

 

화면을 돌려도 세로 방향으로 전환되지 않는다.

이럴 땐, 하기와 같은 간략한 코드로 대처할 수 있다.

 

1. 코드에서 적용하는 방법

하기 음영 코드를 넣어주자. 참고로 자신이 원하는 액티비티(화면) 마다 코드를 넣어주면 된다.

즉, 화면이 여러 개라면 각각의 Activity 마다 코드 적용하기!

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       //세로 화면 고정 
       //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

        //가로 화면 고정 
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

    }
}

다만 이때, 에디터 창에 하기와 같이 빨간 줄에 경고 메시지가 뜰 수 있다.

원활한 동작을 위해서 왠만하면 화면을 고정하지 말하는 노티이기에 화면을 고정하기로 마음먹었다면

무시해도 좋다. 빨간 줄 나왔다고 컴파일 안되거나, 동작이 지원 안 되는 것은 아니니 걱정 말자.

 

2. AndroidManifest.xml (설정 파일에 세팅하기)

- 코드에서 적용하는 방법이 아닌, 안드로이드 설정 파일인 AnroidManifest에서 설정하는 방법이다.

- 역시 자신이 원하는 액티비티 안에 하기 음영 코드를 적용하면 된다. 결과는 상기와 동일하다.  

  가로- android:screenOrientation="landscape"

  세로- android:screenOrientation="portrait"

.... 

    <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>

 

</manifest>

 

 

android:screenOrientation 개발자 문서.

 

<액티비티>  |  Android 개발자  |  Android Developers

Declares an activity (an Activity subclass) that implements part of the application's visual user interface. All activities must be represented by {@code } elements in the manifest file. Any that are not declared there will not be seen by the system…

developer.android.com

 

반응형

댓글