5
我有一個活動。此活動適用於縱向模式或橫向模式。在橫向模式下,我加載一個新的佈局來顯示圖形。 即可檢測姿態,我成立這個在我的清單:禁用方向但檢測方向
android:screenOrientation="sensor" android:configChanges="orientation"
它完美,因爲當我翻我的手機,新的佈局被加載。但是,在lanscape模式下,用戶可以使用按鈕(它是一個切換器)禁用/啓用旋轉。
我寫了這個代碼:
public void onConfigurationChanged(Configuration pNewConfig) {
Log.v(DEBUG_TAG, "Current configuration changes");
if (pNewConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Log.v(DEBUG_TAG, "Screen orientation : LANDSCAPE");
if (pNewConfig.orientation != mCurrentOrientation) {
initTestLandscape();
mCurrentOrientation = pNewConfig.orientation;
}
} else {
Log.v(DEBUG_TAG, "Screen orientation : PORTRAIT");
if (!mIsLandscapeLocking
&& pNewConfig.orientation != mCurrentOrientation) {
initTestPortrait();
mCurrentOrientation = pNewConfig.orientation;
}
}
super.onConfigurationChanged(pNewConfig);
}
此代碼的工作,但是當用戶在橫向模式和翻轉手機早在肖像模式和鎖開啓時,lanscape佈局在縱向模式下翻轉我不想那樣!
我添加
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
但是這個代碼禁用onConfigurationChanged方法,如果用戶再次翻轉手機,我無法檢測...
你能幫助我嗎?
這是非常簡單的。我叫setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);當用戶鎖定視圖並調用setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR)時;當用戶解鎖...這很容易,我怎麼沒有想到這個解決方案?不便之處,敬請諒解。 (我無法回答我的問題) – FinalSpirit
值得注意的是,如果用戶在視圖旋轉到右側而不是左側時鎖定了自己的解決方案,那麼該解決方案仍然會出現異常。該視圖會翻轉,因爲您正在鎖定「SCREEN_ORIENTATION_LANDSCAPE」,這隻意味着一方面。您可能需要'SCREEN_ORIENTATION_SENSOR_LANDSCAPE'將其保持在橫向模式中,但如果用戶切換到手機/平板電腦的另一側,它仍會監聽設備中的傳感器。 – SDJMcHattie
是的,您必須使用SCREEN_ORIENTATION_SENSOR_LANDSCAPE來代替SCREEN_ORIENTATION_LANDSCAPE,但是當我發佈此主題時,我在Android 8上不支持SCREEN_ORIENTATION_SENSOR_LANDSCAPE – FinalSpirit