最近,在公司負責了app與社交模塊的對接工作,用一個透明背景的Activity作爲中間跳轉Activity。在接完所有接口後,突然一個bug出現,說點擊icon跳轉蹦了!蹦了!附帶一張日誌
我試了一下,一臉懵逼,問他們怎麼玩出來這個bug,拿了他們手機,確實必現這個bug,試了好幾臺手機,發現8.0以上的測試機有些必現這個bug。
從日誌中,字面意思上是“只有全面屏的activity才能鎖定屏幕方向”,逛遍Google和百度,發現問題的大概位置,原來是跟這個屬性有關:
在一篇文章https://zhuanlan.zhihu.com/p/32190223中發現一些原因,我借鑑了一下,把它搬了過來:
- “windowIsTranslucent”爲true;
- “windowIsTranslucent”爲false,但“windowSwipeToDismiss”爲true;
- “windowIsFloating“爲true;
以上三種情況認爲不是“fullscreen“
以上應該就是原因所在了,網上主流的解決方案是都將android:windowIsTranslucent設爲false。不過,嘗試了一下,確實可以正常跳轉了,但是,跳轉時Activity的背景不是爲透明瞭,這樣不能滿足了設計需求。
我想了一下,日誌說明了非fullscreen不能固定屏幕方向,那就我去掉固定屏幕方向的屬性試試,發現確實不出意料,可以正常跳轉,但是!但是!發現屏幕竟然還是固定的,因缺思廳,不過原因我沒有找到\偷笑,不過,經過測試確定了是與“windowIsTranslucent”這個屬性有關,當它爲true時,屏幕是默認固定的。所以我的解決方案就找了,直接去掉這句即可完美解決問題
保留android:windowIsTranslucent爲true,即可同時解決Activity背景透明同時可以固定屏幕方向和正常跳轉的問題。
不過看網上的介紹這個好像是SDK8.0的系統bug來,之後的版本會進行修復,不過這個坑還是避免不了。
如果有大神發現了爲什麼android:windowIsTranslucent爲true時屏幕會固定的原因,麻煩告訴我一聲,我挺好奇的,或者我以後找到問題所在,也會來更新這篇博客。