1.原因:
在解决页面跳转时黑屏或者白屏时添加了true, 然后这个时候又设置了页面的方向,从而导致了这个问题。

源码分析问题: 在26的编译版本时是可以正常的使用的,但是当把编译版本升级到27时,就会出现"Only fullscreen activities can request orientation"异常。对源码的分析,得出这是google出于安全的考虑,对android8.0以后的版本做的处理,当一个Activity固定方向并且是透明的,在8.0以后的版本中就会抛出异常

Entry ent = AttributeCache.instance().get(packageName,realTheme, com.android.internal.R.styleable.Window, userId);
final boolean translucent = ent != null && (ent.array.getBoolean(com.android.internal.R.styleable.Window_windowIsTranslucent, false)|| (!ent.array.hasValue(com.android.internal.R.styleable.Window_windowIsTranslucent) &&  ent.array.getBoolean(com.android.internal.R.styleable.Window_windowSwipeToDismiss,false)));
fullscreen = ent != null && !ent.array.getBoolean(com.android.internal.R.styleable.Window_windowIsFloating, false) && !translucent;
fullscreen = ent != null && !ActivityInfo.isTranslucentOrFloating(ent.array);
noDisplay = ent != null && ent.array.getBoolean(com.android.internal.R.styleable.Window_windowNoDisplay, false);if (ActivityInfo.isFixedOrientation(requestedOrientation) && !fullscreen && appInfo.targetSdkVersion > O) {throw new IllegalStateException("Only fullscreen activities can request orientation");
}

上面是27的源码片段,通过上面我们可以看出当 三个条件同时满足的时候,系统会抛出"Only fullscreen activities can request orientation"异常。先分别来说说这三个条件都表示什么意思:

  1. ActivityInfo.isFixedOrientation(requestedOrientation) ——
    表示判断当前的|Activity是否固定了方向,truea为固定了方向。
  2. fullscreen —— 表示Activity是否是透明的或者是否悬浮在Activity上,是透明的或者悬浮在Activity上fullscreen就等于false.
    以下三种情况认为不是“fullscreen“:
  • “windowIsTranslucent”为true;
  • “windowIsTranslucent”为false,但“windowSwipeToDismiss”为true;
  • “windowIsFloating“为true;
  1. appInfo.targetSdkVersion > O —— 表示编译版本号大于26

当以上的三个条件同时满足的时候,系统框架就会抛出异常,那意思我们只能让上面的条件不满足就可以了

问题解决

  1. 不固定Activity的方向
  2. 不适配8.0及以上手机(当你看到这个问题时,肯定是要适配8.0及以上的,所以当我没有说)
  3. 修改AppTheme的样式为下,windowIsTranslucent设置为false,同时设置windowDisablePreview为true.(这个方法,可以同时满足透明和固定方向)
<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="android:windowFullscreen">true</item><item name="android:windowIsTranslucent">false</item><item name="android:windowDisablePreview">true</item></style></resources>

注:android 9.0 去掉了这个限制,原来Activity中对透明Activity的限制取消了。

参考:https://blog.csdn.net/LoveDou0816/article/details/79129324

2.黑/白屏原因:
当然白色闪屏的停留是因为 application 的主题样式android:theme="@style/AppTheme" 使用了 Theme.Light 题导致的,Light 样式的 windowBackground、colorBackground、colorForeground 等属性的值均为 light 也就是白色偏亮,所以才会出现白色闪屏。如果使用了 Theme.Black就会出现黑屏。

解决黑白屏的方法有两种方法:
方法有两种,一种是为them设置背景,二是为them设置透明属性。
方式一:设置背景(windowBackground)

  <!-- 为 Theme 设置背景图 --><style name="AppTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen"><item name="android:windowBackground">@drawable/splash_bg</item></style>

设置背景后,启动程序时会先显示这个图片,因而避免了黑白屏。

方式二:设置透明度(windowIsTranslucent)

  <!-- 为 Theme 设置透明属性 --><style name="AppTheme" parent="android:style/Theme.Black.NoTitleBar.Fullscreen"><item name="android:windowIsTranslucent">true</item></style>

程序启动后不会黑屏而是透明,等到界面初始化完成后才一次性显示出来。
两者的优缺点:

  • 为 Theme 设置背景图 给人程序启动快的感觉,界面先显示背景图,然后再刷新其他界面控件,刷新不同步。
  • 为 Theme 设置透明属性 给人程序启动慢的感觉,界面会一次性刷出来,刷新同步。

黑白屏问题参考:https://blog.csdn.net/fancylovejava/article/details/39643449

Only fullscreen opaque activities can request orientation比较完美的解决方法,黑白屏问题解决相关推荐

  1. Android之Only fullscreen opaque activities can request orientation

    1 问题 使用透明的activity主题,并且固定了方向,在Android8.0手机上提示错误如下 Only fullscreen opaque activities can request orie ...

  2. Android8.0适配-Only fullscreen opaque activities can request orientation

    背景 2018年7月18日上午,电信终端产业协会(TAF)发布<移动应用软件高API等级预置与分发自律公约>(以下简称<公约>).OPPO.华为.百度.360.阿里.小米.VI ...

  3. 安卓开发——android8.0应用崩溃,报错: Only fullscreen opaque activities can request orientation

    上周末升级了最新的MIUI 8.1.18开发版,早早的吃上了奥利奥 Android O(虽然在miui下并没有什么变化(-_-),但还是很开心的,毕竟我的小米MIX2终于可以用到了之前只是内测的全屏手 ...

  4. 分享qq报错Only fullscreen opaque activities can request orientation

    这两天突然发现了一个项目中分享链接到qq时崩溃但分享到微信却啥事没有的问题,然后连上usb,查看error发现报了这样一个错:Only fullscreen opaque activities can ...

  5. android opaque,Android 8.0系统 Only fullscreen opaque activities can request orientation

    最近在华为8.0系统的手机中遇到Only fullscreen opaque activities can request orientation Caused by: java.lang.Illeg ...

  6. Android Only fullscreen opaque activities can request orientation

    原因 错误是由全屏透明 Activity 引起的 Caused by: java.lang.IllegalStateException: Only fullscreen opaque activiti ...

  7. Only fullscreen opaque activities can request orientation

    这个问题是在android8.0以上的手机测试出来的 自己的处理方法 把配置文件中 android:screenOrientation="portrait" 删除即可.

  8. 使用nginx做反代时遇到413 Request Entity Too Large的解决方法

    使用nginx做反代时遇到413 Request Entity Too Large的解决方法 参考文章: (1)使用nginx做反代时遇到413 Request Entity Too Large的解决 ...

  9. Nginx出现“413 Request Entity Too Large”错误解决方法

    今天使用phpmyadmin的导入功能的时候,由于sql文件过大,服务器出现错误提示了,413 Request Entity Too Large,google了一下,发现是Nginx的错误提示.  解 ...

  10. MVC中提示错误:从客户端中检测到有潜在危险的 Request.Form 值的详细解决方法...

    今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...

最新文章

  1. centos7httpd服务的搭建
  2. python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
  3. python爬虫经典教程-python爬虫经典例子有哪些
  4. javax.servlet.GenericServlet类(协议无关版本)
  5. 有逼格的产品经理的工作台长啥样?
  6. Excel中HYPERLINK链接图片的用法
  7. Live meeting+OCS 二次开发手记
  8. Android studio之Unknown run configuration type AndroidRunConfigurationType解决办法
  9. AUTOSAR从入门到精通100讲(四十一)-动态架构设计中的时序图
  10. Cookie知识总结(-)
  11. Android 用MediaCodec ,MediaExtractor解码播放MP4文件
  12. 纯java程序jdbcjar包放在哪_oracle 11g jdbc jar包在哪个文件目录
  13. web2.0网站的四大特性简述
  14. Python学习笔记之蓝牙模块通讯-Pybluez
  15. 全息投影技术及其实现(附素材下载)
  16. 详解万向锁,欧拉旋转角,slam中万向锁的理解
  17. PLC1200 模拟量采集
  18. 【柒穆雨】什么是平面设计,学习平面设计需要具备什么条件?
  19. 自己动手开发安卓版按键精灵
  20. 【zz】陈硕:当析构函数遇到多线程──C++ 中线程安全的对象回调

热门文章

  1. GNS3基础路由技术实验
  2. iOS菜鸟笔记4:一个简单的TableView
  3. 怎么给PDF文档加页码,PDF文档加页码的方法
  4. finecms aip.php漏洞,代码审计| FineCMS的GetShell姿势
  5. Qt Quick事件处理之鼠标 键盘 定时器
  6. Concatenated Multiples(思维,数学)
  7. Docker 启动nginx报错Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.
  8. 苹果手机电池保养再用两年!
  9. 苹果手机换电池对手机有影响吗_你知道你的手机电池多久换一次吗?
  10. noip2018翻车记