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时屏幕会固定的原因,麻烦告诉我一声,我挺好奇的,或者我以后找到问题所在,也会来更新这篇博客。

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