Android 앱의 방향을 휴대폰의 세로 및 태블릿의 가로로 고정하는 방법은 무엇입니까?


82

사용자가 기기를 회전 할 때 방향을 가로 모드로 변경하고 싶지 않은 Android 앱을 개발 중입니다. 또한 잠금 방향을 휴대폰에서는 세로 모드로, 태블릿에서는 가로 모드로 설정하고 싶습니다. 가능하다면 어떻게해야합니까? 감사.


2
@CommonsWare : 내 앱에는 휴대폰의 potrait 모드에서 훨씬 더 효율적으로 탐색되는 긴 목록이있는 메뉴가 있습니다.
Ankit Rawat 2013 년

3
그런 다음 사용자가 모든 방향에서 장치를 사용할 수있는 능력을 존중하는 더 나은 GUI 디자인을 생각해보십시오.
CommonsWare 2013 년

답변:


155

파일 의 활동 요소 내에 아래 속성을 정의하기 만하면 AndroidManifest.xml됩니다. 방향을 세로로 제한합니다.

android : screenOrientation = "세로"

예:

        <activity
            android:name="com.example.demo_spinner.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

추가로, 아래 Eduard Luca의 설명 screenOrientation="sensorPortrait"에 따라 180도 회전을 활성화하려는 경우 에도 사용할 수 있습니다 .


21
또는 sensorPortrait사용자가 화면을 180도 회전 할 수 있도록하려면 :)
Eduard Luca

44

당신은 android:screenOrientation="portrait"당신의 AndroidManifest.xml. 이것은 <activity>태그 에서 수행됩니다 .

또한 Android 개발자 가이드에는 다음과 같이 명시되어 있습니다.

[...] 또한 애플리케이션에 요소와 함께 세로 또는 가로 방향이 필요함을 명시 적으로 선언해야합니다. 예 : <uses-feature android:name="android.hardware.screen.portrait" />.


6
우수 사례 인용문에 +1을 입력하고 정답이되어야하므로 정확하고 먼저 게시되었습니다.
Eduard Luca

7
글로벌 방식이 있습니까?
Tyler Pfaff 2015

21

문제를 완전히 해결하지 못하는 답변을 수락했음을 알 수 있습니다.

android:screenOrientation="portrait" 

이렇게하면 앱이 휴대폰과 태블릿 모두에서 세로로 표시됩니다.

다음을 사용하여 앱을 장치의 "선호"방향으로 강제 설정할 수 있습니다.

android:screenOrientation="nosensor"

이로 인해 대부분의 휴대 전화에서는 앱이 세로로, 태블릿에서는 가로로 앱이 강제 실행됩니다. 가로 모드 용으로 설계된 키패드가있는 전화기가 많이 있습니다. 앱을 세로로 강제하면 이러한 장치에서 거의 사용할 수 없게 될 수 있습니다. Android는 최근 다른 유형의 기기로도 이전하고 있습니다. 장치가 원하는 방향을 선택하도록하는 것이 가장 좋습니다.


설정 "nosensor"당신의 공식 문서에서 더 많은 읽을 수 있습니다에 대한 호기심 사람들을 위해 developer.android.com/guide/topics/manifest/activity-element
제임스 요르단 테일러

11

프로그래밍 방식으로 태블릿인지 전화인지 확인해야 할 수도 있습니다. 먼저 확인 장치가 전화인지 태블릿인지 확인해야합니다.

장치가 스마트 폰인지 태블릿인지 확인합니까?

태블릿 또는 휴대 전화-Android

그때......

if(isTablet)
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);      
}else
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

안녕하세요 @Bhavesh, Android 9 모바일에서는 작동하지 않습니다.
Manikandan K

태블릿인지 어떻게 확인할 수 있습니까? 당신은 설명하지 않았습니다 ...
Abdul Wahid

수정 된 답변을 볼 수 있습니다. 장치가 스마트 폰인지 태블릿인지 확인하는 방법을 포함 시켰습니까?
Bhavesh Hirpara

3
<activity android:name=".yourActivity"
          android:screenOrientation="portrait" ... />

주요 활동에 추가하고

android:configChanges="keyboardHidden"

키보드가 호출 될 때 프로그램이 모드를 변경하지 못하도록합니다.


1

활동 태그 아래의 Manifest 파일에서 화면 방향을 세로로 설정하십시오.


0
android:screenOrientation="locked"

실제 활동 을 <application>위해 모든 앱에서 <activity>


0

활동 태그 아래의 Manifest 파일에서 화면 방향을 세로로 설정하십시오.

여기에 예

모든 활동에 참여해야합니다.

활동에 다음 줄 추가

초상화 용

android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"

풍경 용

android:screenOrientation="landscape"
tools:ignore="LockedOrientationActivity"

여기 MainActivity의 예

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="org.thcb.app">
 
    <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"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

<activity android:name=".MainActivity2"
            android:screenOrientation="landscape"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


-1

그냥 추가 :

android:screenOrientation="portrait"

" AndroidManifest.xml "에서 :

<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:label="@string/app_name">
</activity>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.