在 Android 8.0 中,使用者可以切換自動旋轉和直向旋轉模式 開啟「快速設定」方塊或「顯示」設定。在 Android 中 9,我們更新了 肖像旋轉模式,只要固定 Google 地球的 目前螢幕旋轉 (即使裝置位置變更也一樣)。使用者可觸發 視需要按一下導覽列的新按鈕,手動旋轉。 我們將肖像模式重新命名為旋轉鎖定,並會在自動旋轉時啟動 已關閉。自動旋轉模式沒有任何變更。
當裝置為旋轉鎖定模式時,使用者可以鎖定螢幕
上方可見活動 (假設目前的系統) 支援的旋轉功能
限制)。如果上方的活動可以在
旋轉鎖定模式時,也會提供相同的選項,
根據 Activity 的 screenOrientation
,某些例外情況
以及環境敘述
旋轉鎖定模式的運作方式:在裝置旋轉時,導覽列中顯示按鈕
並輸入變更內容為此,裝置的方向感應器必須保持啟用狀態
也會影響這項設定輕觸這個按鈕可有效設定使用者旋轉角度
偏好設定 (Settings.System.USER_ROTATION
)。WindowManager 會使用這個
以及熱門活動與系統狀態的其他詳細資料
來變更系統旋轉設定WindowManager 繼續使用使用者旋轉功能
系統移動至
其他活動。
在活動之間移動時,應維持使用者旋轉偏好設定。 不過,由於大多數手機使用者只想橫向瀏覽 我們為一段短暫的時期添加了自然方向偏誤。使用者旋轉 每當系統傳回 系統旋轉會變更裝置的自然方向對於大多數手機 裝置的自然方向為直向 (0o)。正在重設使用者旋轉設定 通常在使用僅限直向的應用程式、鎖定手機或 返回啟動器工作區。
過去十年來,使用者的輪替互動行為並沒有太多的改變。位使用者 如果此功能在旋轉後逐漸消失,可能會難以發現 以及按鈕在導覽列中的位置因此,我們加入了 「旋轉」按鈕,在按鈕出現時醒目顯示。簡介 系統只會針對前幾個按鈕互動發生模式行為 簡介模式已停用。
來源
新增對旋轉建議的支援 Android 9.大多數的變更包含在 。
services/.../server/policy/PhoneWindowManager.java
:- 正在使用「
WindowOrientationListener
」輸出內容的掛鉤 (MyOrientationListener
,負責監控 感應器,判斷裝置是否已旋轉) - 讓
WindowOrientationListener
保持啟用狀態,即使 自動旋轉功能已停用 (請參閱needSensorRunningLp()
) - 根據使用者旋轉偏好計算系統旋轉角度,頂端
活動
screenOrientation
設定和系統狀態 (請參閱rotationForOrientationLw()
) - 判斷上方的活動是否能旋轉至指定的旋轉角度 (請參閱
isRotationChoicePossible()
)
- 正在使用「
SystemUI/.../statusbar/phone/NavigationBarFragment
:- 可決定是否在旋轉時顯示導覽列按鈕
來自
PhoneWindowManager
的建議回呼 (請參閱onRotationProposal()
) - 處理隱藏旋轉導覽列按鈕的時機 (請參閱
setRotateSuggestionButtonState(false)
) - 處理按鈕逾時,包括 導覽列處於隱藏狀態 (通常在全螢幕模式中)
- 在使用者返回裝置的自然模式時重設使用者偏好設定
方向 (
mRotationWatcher
) - 為導覽列按鈕動畫挑選適當的樣式。
已套用至「
NavigationBarView
」 (請參閱onRotationProposal()
) - 加入簡介模式邏輯,包括特殊動畫
(請參閱參考資料:
Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED
) - 實作 enable2 旋轉標記 (請參閱
disable()
)
- 可決定是否在旋轉時顯示導覽列按鈕
來自
SystemUI/.../statusbar/phone/NavigationBarView.java
:- 樣式按鈕圖示動畫,用於比對待旋轉項目 (請參閱
updateRotateSuggestionButtonStyle()
) - 處理按鈕顯示設定變更 (請參閱
setRotateButtonVisibility()
,包括要隱藏的邏輯 旋轉按鈕 (如果已啟用特定無障礙服務) (考慮在最右側的導覽列按鈕堆疊排名)
- 樣式按鈕圖示動畫,用於比對待旋轉項目 (請參閱
SystemUI/res/layout/menu_ime.xml
:- 加入用於旋轉按鈕的新
KeyButtonView
。 堆疊在選單和輸入法編輯器/鍵盤選擇工具上方,但位於 無障礙工具按鈕
- 加入用於旋轉按鈕的新
SystemUI/res/drawable/ic_sysbar_rotate_button.xml
:- 複雜
AnimatedVectorDrawable
,用於製作 旋轉導覽列按鈕 - 樣式 (在
SystemUI/res/values/styles.xml
中) 的用途如下 設定旋轉的起始和結束角度,這樣就可以顯示相同的可繪項目 為各種起始和結束旋轉的動畫效果 - 圖示色調是透過
TintedKeyButtonDrawable
設定
- 複雜
實作
Android 9 內含所有必要變更, 輪替建議功能 使用軟體瀏覽鍵 (返回、主畫面等) 的裝置。
利用硬體瀏覽鍵建立裝置的裝置製造商, 如要實作這項功能,必須設計並實作自己的系統 UI 預設用途或功能停用建議所有引進的表面 操作時,只要裝置電量 90o 或 180o,可方便使用 並且可快速取用有鑑於此 (與輸入法編輯器/鍵盤挑選器不同) 不建議使用。
使用這項功能的硬體需求與需求條件相同 才能使用自動旋轉
確保導入方式維持一致的使用者旋轉偏好設定
(Settings.System.USER_ROTATION
) 已重設為裝置的自然模式
並在系統基於任何原因變更裝置的自然旋轉時旋轉
自動旋轉功能關閉時提供的導入方式會執行此功能 (請參閱
NavigationBarFragment.mRotationWatcher
)。
StatusBarManager.disable2
中有一個新旗標要暫時顯示
防止顯示旋轉建議。詳情請見
StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS
。這個標記必須是
尊重所有實作中的高度,因為重要的系統應用程式會使用
設定精靈。提供的導入方式支援這項功能 (詳情請參閱
NavigationBarFragment.disable()
)。
強烈建議您啟用這項功能,並追蹤 Android 開放原始碼計畫的後續情況 導入。我們的目標是讓輪替體驗 模擬現今大多數手機的使用體驗 請切換自動旋轉與肖像鎖定模式
自訂
由於旋轉建議只會在旋轉鎖定模式下顯示 (關閉自動旋轉),
您可以選擇是否要在
選擇關閉自動旋轉功能詳情請見
def_accelerometer_rotation
英吋
SettingsProvider/res/values/defaults.xml
即可套用預設變更。
在自動旋轉功能啟用或未啟用時,使用者可以輕鬆變更設定 (不論預設設定為何) 透過快速設定或顯示設定中的旋轉圖塊。
驗證
如要進行測試,只要修改管制位置來關閉及開啟這項功能,
Settings.Secure
的值。最簡單的方式是執行
從具有特殊權限的 ADB 執行個體擷取以下指令:
adb shell settings put secure show_rotation_suggestions <x>
將 x 設為 0
關閉,將 1
設為開啟。
如要進行測試,只要修改相關的
Settings.Secure
的值。最簡單的方式是執行
從具有特殊權限的 ADB 執行個體擷取以下指令:
adb shell settings put secure num_rotation_suggestions_accepted 0