我正在嘗試構建自定義相機應用程序。我有一個爲相機預覽擴展SurfaceView的類。當設備改變方向時,該表面被破壞並重新創建,導致明顯的「故障」,從而降低用戶體驗。Android:保留相機預覽方向更改,而其他視圖可以旋轉
我想要做的就是防止在取向改變時重新創建相機預覽。另外,我想在這個預覽上覆蓋一些按鈕(例如,閃光燈,前/後相機的選擇等),其將在方向改變時旋轉。這類似於股票相機應用做什麼:
Stock camera in landscape mode.
Stock camera in portrait mode. Note that buttons rotate on orientation change.
我發現(例如描述,here)最好的方法是使用清單文件中的活動方向,以迫使景觀,拍攝照片後,根據實際的設備方向旋轉結果圖像。據我所知,這種方法的缺點是這也會阻止重疊按鈕的旋轉。另外,正如我已經讀了一些關於使用片段和保留片段實例,我想知道我是否可以通過保留包含相機預覽的片段(是的,我是一個noob)來實現我的目標。
什麼是正確的方法來做到這一點?
謝謝。你說股票相機應用程序「通過更改按鈕和其他UI元素來僞造肖像方向」,他們是如何做到的?我猜他們在清單中爲此活動設置了'android:screenOrientation =「landscape」',但是如何旋轉UI元素呢? – nerdelicious
他們有一個OrientationListener,當他們檢測到設備已轉向縱向時,他們旋轉按鈕圖標。你可以在開源庫存[Camera app](https://android.googlesource.com/platform/packages/apps/Camera.git)和[Open camera](https://github.com)/almalence/OpenCamera) –
與聽衆的股票攝像頭似乎是最好的方法。但是,是否有任何可用的解決方案來使用OrientationListener旋轉狀態欄(通知,電池等)? – Fllo