Android/Unity混合開發屏幕旋轉問題以及8.0透明頁面兼容

前段時間做個項目是 Android 集成Unity的,混合開發。測試沒問題,發佈出去了。

但是突然收到消息說崩潰了。沒辦法,看唄。然後查看平板設備,發現是8.0系統問題

它不讓透明的頁面申請屏幕變換。即setRequestedOrientation(......)

這個請求我寫在了BaseActivity裏,沒辦法只能去掉了,然後我將除透明activity外的頁面在清單頁面中寫上橫屏

android:screenOrientation="landscape"

然後運行,嗯?沒成功?然後我單獨起個demo來看看,這不沒問題嗎。坑我。

我停止下來,仔細想了想,發現問題所在是Unity的問題導致。試驗把unity效果註釋掉,確實正確了。

附:我的項目是Unity導出android項目,然後放到Android Studio中編譯成aar,放到自己的android項目中。

我就去Unity中修改了導出橫豎屏設置。(unity/android都是自己開發,所以清門熟路)

這個屏幕方向有幾個選擇

  • Portrait:豎屏
  • Portrait Upside Down:豎屏,手機倒過來
  • Landscape Right:橫屏,屏幕在home鍵右邊
  • Landscape Left:橫屏,屏幕在home鍵左邊(比較常用,我選擇的也是這個
  • Auto Rotation:自動旋轉屏幕
  • Auto Rotation有額外選項,可以只勾選某些方向,根據個人需求來指定旋轉方向。

然後重新編譯了一次,運行沒問題,有3D的界面不自動變了。Android 8.0系統也沒事了。

回憶一下

  1. 透明Activity取消申請屏幕旋轉的代碼,對不透明的頁面設置。
  2. Unity項目導出的時候設置屏幕方向
  3. 成功

忘記在哪看到的一句話了, 透明Activity的屏幕方向跟隨下面那個不透明activity的方向。所以只要保證跳轉透明頁面的activity的屏幕方向正確即可。

附贈 Android的屏幕方向列表:

參數 功能 自動旋轉打開 自動旋轉關閉
unspecified -1 讓系統決定Activity的方向,由傳感器和系統設置共同決定 四個方向 不旋轉
landscape 0 強制爲橫屏,忽略傳感器和系統設置 不旋轉 不旋轉
portrait 1 強制爲豎屏,忽略傳感器和系統設置 不旋轉 不旋轉
user 2 使用用戶當前的首選方向 四個方向 不旋轉
behind 3 與Activity堆下的Activity方向相同 四個方向 不旋轉
sensor 4 根據傳感器來決定方向,忽略系統設置 四個方向 四個方向
nosensor 5 忽略系統設置,忽略傳感器 不旋轉 不旋轉
sensorLandscape 6 默認使用橫屏,忽略系統設置,但是可以響應傳感器的操作 橫屏的兩個方向 橫屏的兩個方向
sensorPortrait 7 默認使用豎屏,忽略系統設置,但是可以響應傳感器的操作 豎屏兩個方向 豎屏兩個方向
reverseLandscape 8 默認使用橫屏,與默認橫屏翻轉180度的方向 只能使用翻轉的橫屏 只能使用翻轉的橫屏
reversePortrait 9 默認使用豎屏,與默認豎屏翻轉180度的方向 只能使用翻轉的豎屏方向 只能使用翻轉的豎屏方向
fullSensor 10 由傳感器決定,能旋轉爲任意方向(sensor只能旋轉默認橫豎屏) 四個方向 四個方向
userLandscape 11 默認橫屏,但是能夠根據傳感器旋轉到任意橫屏方向 橫屏的兩個方向 默認的橫屏方向
userPortrait 12 默認豎屏,但是能夠根據傳感器旋轉到任意豎屏方向 豎屏的兩個方向 默認的豎屏方向
fullUser 13 允許使用用戶的任意方向 四個方向 不旋轉
locked 14 鎖定爲當前方向 不旋轉 不旋轉

 

一起開黑學習呀。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章