簡體   English   中英

Android-屏幕方向問題-僅需要縱向

[英]Android - Screen Orientation Issue - Need only portrait

我的問題:我希望我的應用程序只能以縱向模式運行。 為此,我必須為每個活動在“ AndroidManifest”文件中定義“ android:screenOrientation=portrait ”。 我不想為每個活動定義該行。 因此,我想出了另一個解決方案,例如創建“ Application ”的子類並注冊activity's life cycle並在方法“ onActivityCreated ”中添加了以下代碼:

activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

但是現在的問題是“啟用了設備自動旋轉功能,並且當前設備位置處於橫向狀態,當我打開應用程序時,每個活動最初都啟動了兩次。” 有什么通用的解決方案嗎?

每個活動被啟動2次,因為它首先以橫向模式加載,並在執行屏幕旋轉代碼行時調用onCreate()並再次旋轉

activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

解決這個問題的唯一方法是為清單中的每個活動提及screenOrientation =“ portrait”。 這是您強制活動以縱向模式開始創建的唯一方法。

您可以通過以下簡單方法為整個應用程序實現此目的。 這將消除擴展肖像基類以及在Portrait的每個活動中進行清單聲明的開銷。

為此,您的應用程序必須具有一個應用程序類。 在其onCreate()中,當您的應用程序首次啟動時,您需要注冊一個ActivityLifecycleCallbacks對象(API級別14+)以接收活動生命周期事件的通知。

上面的回調使您有機會在任何活動開始(或停止或恢復)時執行自己的代碼。 您可以將其用於新創建的活動上的setRequestedOrientation()。

class DummyApp extends Application {

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

    // Register Callback
    registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
        @Override
        public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

            activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        }
        // Other method of the ActivityLifecycleCallbacks as well you need to over-ride.
    });

  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM