[英]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.