簡體   English   中英

Android:如果方向鎖定,也會檢測屏幕方向變化

[英]Android: detect screen orientation change also if orientation is lock

我有一個帶有一個Activity的Android應用程序和一個帶有多個片段的自定義ViewPager。 我的整個活動都鎖定在人像狀態,但是現在我需要在特定片段內檢測設備處於橫向狀態,然后啟動另一個鎖定於橫向狀態的活動。 在此新活動中,當用戶將設備置於縱向時,我將其關閉並返回至縱向活動。 這是AndroidManifest.xml代碼:

 <activity
        android:name="com.mypackage.MainActivity"
        android:configChanges="orientation"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.AppCompat.Light" >
    </activity>

這是片段中的代碼,應該可以檢測橫向:

public void onConfigurationChanged(Configuration myConfig) {
    int orient = getResources().getConfiguration().orientation;
    switch (orient) {
    case Configuration.ORIENTATION_LANDSCAPE:
        //Launch new activity
        break;
    }       
}

現在我已經注意到,在此清單配置中永遠不會調用onConfigurationChanges,但是僅當我刪除時才調用

android:screenOrientation="portrait"

有沒有一種方法可以使MainActivity保持縱向鎖定並攔截橫向景觀?

現在我注意到從未調用過onConfigurationChanges()

為什么這讓您如此驚訝? 您明確禁用了方向更改,因此該方法沒有意義。 請注意,方向是指屏幕方向,而不是設備的方向。

當設備處於橫向狀態並啟動另一個鎖定於橫向狀態的活動時

您可以吃蛋糕或保留蛋糕,因此可以強制固定方向或調用onConfigurationChanges()

發起另一個鎖定的活動

為什么不為同一活動簡單地擁有單獨的布局文件? 切換將由框架自動處理,因此不需要特殊代碼-只需將文件保存在正確命名的文件夾中即可(請參閱文檔: https : //developer.android.com/guide/topics/resources/providing-resources.html

暫無
暫無

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

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