Android Studio報錯:Only fullscreen opaque activities can request orientation保留Activity透明背景的解決方式

        最近,在公司負責了app與社交模塊的對接工作,用一個透明背景的Activity作爲中間跳轉Activity。在接完所有接口後,突然一個bug出現,說點擊icon跳轉蹦了!蹦了!附帶一張日誌

       我試了一下,一臉懵逼,問他們怎麼玩出來這個bug,拿了他們手機,確實必現這個bug,試了好幾臺手機,發現8.0以上的測試機有些必現這個bug。

       從日誌中,字面意思上是“只有全面屏的activity才能鎖定屏幕方向”,逛遍Google和百度,發現問題的大概位置,原來是跟這個屬性有關:

在一篇文章https://zhuanlan.zhihu.com/p/32190223中發現一些原因,我借鑑了一下,把它搬了過來:

  1. “windowIsTranslucent”爲true;
  2. “windowIsTranslucent”爲false,但“windowSwipeToDismiss”爲true;
  3. “windowIsFloating“爲true;

以上三種情況認爲不是“fullscreen“

以上應該就是原因所在了,網上主流的解決方案是都將android:windowIsTranslucent設爲false。不過,嘗試了一下,確實可以正常跳轉了,但是,跳轉時Activity的背景不是爲透明瞭,這樣不能滿足了設計需求。

我想了一下,日誌說明了非fullscreen不能固定屏幕方向,那就我去掉固定屏幕方向的屬性試試,發現確實不出意料,可以正常跳轉,但是!但是!發現屏幕竟然還是固定的,因缺思廳,不過原因我沒有找到\偷笑,不過,經過測試確定了是與“windowIsTranslucent”這個屬性有關,當它爲true時,屏幕是默認固定的。所以我的解決方案就找了,直接去掉這句即可完美解決問題

保留android:windowIsTranslucent爲true,即可同時解決Activity背景透明同時可以固定屏幕方向和正常跳轉的問題。

不過看網上的介紹這個好像是SDK8.0的系統bug來,之後的版本會進行修復,不過這個坑還是避免不了。

如果有大神發現了爲什麼android:windowIsTranslucent爲true時屏幕會固定的原因,麻煩告訴我一聲,我挺好奇的,或者我以後找到問題所在,也會來更新這篇博客。

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