codememo

전체 응용 프로그램을 세로 모드로만 설정하는 방법은 무엇입니까?

tipmemo 2023. 8. 21. 21:20
반응형

전체 응용 프로그램을 세로 모드로만 설정하는 방법은 무엇입니까?

응용 프로그램이 세로 모드로만 실행되도록 설정하려면 어떻게 해야 합니까?나는 애플리케이션이 실행되는 동안 가로 모드를 비활성화하기를 원합니다.프로그래밍 방식으로 어떻게 합니까?

모든 Android 버전용

원본 XML

지정할 수 있습니다.android:screenOrientation="portrait"manifest.xml 파일의 각 활동에 대해.에서 이 옵션을 지정할 수 없습니다.application꼬리표를 달다

원본 Java

다른 옵션은 프로그래밍 방식으로 수행하는 것입니다. 예를 들어,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(따라서 단순히 인터페이스의 모든 메서드 중 하나가 필요할 때 해당 인터페이스의 모든 메서드를 재정의할 필요가 없습니다.)

예, 프로그래밍 방식으로 모든 활동이 확장되는 추상 활동을 만드는 모든 활동에 대해 이 작업을 수행할 수 있습니다.

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

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

모든 활동을 공통 기본 클래스로 확장할 필요 없이 전체 응용프로그램에 대해 이 작업을 수행할 수 있습니다.

요령은 먼저 프로젝트에 하위 클래스를 포함시키는 것입니다.잇츠onCreate()앱이 처음 시작되면 개체(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);

Android:screenOrientation="portrait"을 AndroidManifest.xml의 활동에 추가합니다.예:

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

사용:

android:screenOrientation="portrait" 

세로 모드에서만 표시할 각 활동의 응용프로그램 매니페스트 파일에 이 행을 작성하기만 하면 됩니다.

모든 활동에 대해 매니페스트 파일에 기록합니다.

android:screenOrientation="portrait" 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //setting screen orientation locked so it will be acting as potrait
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}

Android 개발자 가이드에 나온 것처럼:

"방향" 화면 방향이 변경되었습니다. 사용자가 장치를 회전했습니다.참고: 응용 프로그램이 API 레벨 13 이상(minSdkVersion 및 targetSdkVersion 특성에 의해 선언됨)을 대상으로 하는 경우 "screenSize" 구성도 선언해야 합니다. 장치가 세로 방향과 가로 방향으로 전환될 때 변경되기 때문입니다.

"screenSize" 현재 사용 가능한 화면 크기가 변경되었습니다.이 값은 현재 가로 세로 비율과 비교하여 현재 사용 가능한 크기의 변화를 나타내므로 사용자가 가로 세로 간에 전환할 때 변경됩니다.그러나 응용 프로그램이 API 수준 12 이하를 대상으로 하는 경우 활동은 항상 이 구성 변경 자체를 처리합니다(이 구성 변경은 Android 3.2 이상의 장치에서 실행되는 경우에도 활동을 다시 시작하지 않습니다).API 레벨 13에 추가되었습니다.

AndroidManifest.xml 파일에 다음과 같이 입력할 수 있습니다.

<activity
            android:name=".activities.role_activity.GeneralViewPagerActivity"
            android:label="@string/title_activity_general_view_pager"
            android:screenOrientation="portrait"
            android:configChanges="orientation|keyboardHidden|screenSize"
            >
        </activity> 

추가하기<preference name="orientation" value="portrait" /><widget>내 config.xml에서 작동했습니다.

(다른 솔루션은 내 장치에서 작동하지 않거나, 빌드 중에 덮어쓰거나, 빌드 프로세스 중에 사용되지 않는 오류가 발생했습니다.)

"세로"에서 사용할 활동을 매니페스트 파일에서 활동 태그에 이 코드를 기록해야 합니다.

  android:screenOrientation="portrait" 

이것처럼.

         android:icon="@drawable/icon"
        android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity" 
        android:screenOrientation="portrait" >

하지만 화면을 가로로 보려면 이 코드를 사용하십시오.

android:screenOrientation="landscape"

코틀린에서 모든 활동을 공통 기본 클래스로 확장하지 않고도 전체 응용 프로그램에 대해 이 작업을 수행할 수 있는지 궁금해하는 사람이 있다면 아래 예를 참조하십시오.

class InteractiveStoryApplication: Application() {
override fun onCreate() {
    super.onCreate()
    registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks {
        override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
            activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
        }

        override fun onActivityPaused(activity: Activity?) {
        }

        override fun onActivityResumed(activity: Activity?) {
        }

        override fun onActivityDestroyed(activity: Activity?) {
        }

        override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {
        }

        override fun onActivityStarted(activity: Activity?) {
        }

        override fun onActivityStopped(activity: Activity?) {
        }
    })
}
}

그런 다음 Android Manifest에서 공통 기본 클래스를 다음과 같이 추가해야 합니다.

<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"

두 가지 방법으로 할 수 있습니다.

  1. 더하다android:screenOrientation="portrait" 활동의 당의스트파서에해활동로으당일신매.
  2. 더하다setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);Create()의 'onCreate합니다.

그레이엄 볼랜드의 대답과 유사한...하지만 당신이 원하지 않는다면 애플리케이션 클래스를 만들 필요가 없는 것 같습니다.프로젝트에서 기본 활동만 생성합니다.

public class BaseActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_base);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

또한 Potrait 모드를 사용할 AppCompativity 대신 이 클래스를 확장합니다.

public class your_activity extends BaseActivity {}

Xamarin 사용자의 경우

당신이 의 모든 활동을 모든활다확경우장으로 한다면.BaseActivity추가만 하면 됩니다.

this.RequestedOrientation = ScreenOrientation.Portrait;

이렇게 하면 문제가 해결됩니다.한 활동을 , 특정활가지면려이재작다다정니에서 하세요.OnActivityCreated다음과 같이:

this.Activity.RequestedOrientation = ScreenOrientation.Landscape;

글쎄요, 저는 모든 답을 시도했지만 이전 버전의 안드로이드에서는 작동하지 않았습니다.따라서 최종 해결책은 setContentView 바로 위의 모든 활동에 이 코드를 추가하는 것입니다.

    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

코틀린에서 -->

Create()에서 Extends Application 클래스 재미있게 사용할 수 있습니다...

registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
        override fun onActivityCreated(p0: Activity, p1: Bundle?) {
            p0.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
        }

        override fun onActivityStarted(p0: Activity) {
        }

        override fun onActivityResumed(p0: Activity) {
        }

        override fun onActivityPaused(p0: Activity) {
        }

        override fun onActivityStopped(p0: Activity) {
        }

        override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
        }

        override fun onActivityDestroyed(p0: Activity) {
        }
    }

    )}

매니페스트에 다음을 입력합니다.

<activity
    android:screenOrientation="portrait"
    <!--- Rest of your application information ---!>
</activity>

언급URL : https://stackoverflow.com/questions/6745797/how-to-set-entire-application-in-portrait-mode-only

반응형