전체 응용 프로그램을 세로 모드로만 설정하는 방법은 무엇입니까? 어떻게합니까? 응용 프로그램이 실행되는 동안 가로 모드를

응용 프로그램이 세로 모드로만 실행되도록 설정하려면 어떻게합니까? 응용 프로그램이 실행되는 동안 가로 모드를 비활성화하고 싶습니다. 프로그래밍 방식으로 어떻게합니까?



답변

모든 안드로이드 버전

XML에서

android:screenOrientation="portrait"manifest.xml 파일에서 각 활동에 대해 지정할 수 있습니다 . application태그 에는이 옵션을 지정할 수 없습니다 .

자바에서

다른 옵션은 프로그래밍 방식으로 수행하는 것입니다 (예 Activity: 기본 클래스).

@Override
public void onCreate(Bundle savedInstanceState) {
  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

Android 4 이상 (API 14 이상)

마지막 옵션은 Android 4.0 (API 14+) 이후에만 사용할 수있는 활동 라이프 사이클 리스너로 수행하는 것입니다. 모든 것은 커스텀 Application클래스 에서 발생합니다 :

@Override
public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
        @Override
        public void onActivityCreated(Activity a, Bundle savedInstanceState) {
            a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
    });
}

ActivityLifecycleAdapter는 빈 구현이 될 생성해야 할 도우미 클래스 일뿐입니다 ActivityLifecycleCallbacks(따라서 단순히 인터페이스 중 하나가 필요할 때 해당 인터페이스의 모든 메소드를 재정의 할 필요는 없습니다).


답변

예, 프로그래밍 방식과 모든 활동 모두 에서이 작업을 수행하여 모든 활동이 확장되는 AbstractActivity를 만들 수 있습니다.

public abstract class AbstractActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

이 추상 활동은 글로벌 메뉴에도 사용할 수 있습니다.


답변

모든 활동을 공통 기본 클래스로 확장 하지 않고도 전체 애플리케이션에 대해이를 수행 할 수 있습니다 .

트릭은 먼저 Application프로젝트에 서브 클래스 를 포함시키는 것 입니다. 에서 onCreate()앱이 처음 시작될 때 호출되는 ActivityLifecycleCallbacks활동 수명주기 이벤트 알림을 수신 하도록 객체 (API 레벨 14+)를 등록 합니다.

이렇게하면 때마다 자신의 코드를 실행할 수있는 기회를 제공합니다 모든 앱에서 활동이 시작 (또는 중지 또는 재개, 또는 무엇이든)됩니다. 이 시점 setRequestedOrientation()에서 새로 생성 된 활동을 호출 할 수 있습니다 .

class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // register to be informed of activities starting up
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {

            @Override
            public void onActivityCreated(Activity activity,
                                          Bundle savedInstanceState) {

                // new activity created; force its orientation to portrait
                activity.setRequestedOrientation(
                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

            }

            ....

        });

    }
}


답변

매니페스트 파일에서이를 설정할 수 있습니다.

android:name=".your launching activity name"
android:screenOrientation="portrait"

클래스 파일에 다음과 같이 코드를 작성하여 동일하게 달성 할 수도 있습니다.

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


답변

AndroidManifest.xml의 활동에 android : screenOrientation = “portrait”를 추가하십시오. 예를 들면 다음과 같습니다.

<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait">


답변

사용하다:

android:screenOrientation="portrait" 

세로 모드로만 표시하려는 각 활동의 응용 프로그램 매니페스트 파일에이 줄을 작성하십시오.


답변

모든 활동에 대해 매니페스트 파일에 이것을 작성하십시오.

android:screenOrientation="portrait"