Only fullscreen opaque activities can request orientation
出现Only fullscreen opaque activities can request orientation是谷歌爸爸在安卓8.0版本时为了支持全面屏,增加了一个限制:如果是透明的Activity,则不能固定它的方向,因为它的方向其实是依赖其父Activity的(因为透明)。然而这个bug只有在8.0中有,8.1中已经修复。还有种原因是代码中手动取消App启动白屏或者黑屏的时候,将Splash界面设为了透明,然后这个时候又设置了方向为垂直,从而导致了这个问题。总结具体原因有两种:
1.Activity的风格为透明,在manifest文件中指定了一个方向,则在onCreate中崩溃
2.Activity的风格为透明,如果调用setRequestedOrientation方法固定方向,就会崩溃
解决方法
方法一:
1.找到你设置透明的Activity,然后在他的theme中将android:windowIsTranslucent改为false
即:<item name="android:windowIsTranslucent">false</item>
2.再加入<item name="android:windowDisablePreview">true</item>就搞定了。
方法二:
如果项目结构复杂,并不适合去修改配置文件,则通过下面这段代码,写是BaseActivity的成员方法,其中稍难的就是如何获取com.android.internal.R$styleable.Window这个stylable,记住$这个符号是等于代码中的“.”反射是需要写成$,stylable其实是R的内部类,获取到这个数组,就可以用反射调用ActivityInfo#isTranslucentOrFloating()这个方法了。
private boolean isTranslucentOrFloating(){boolean isTranslucentOrFloating = false;try {int [] styleableRes = (int[]) Class.forName("com.android.internal.R$styleable").getField("Window").get(null);final TypedArray ta = obtainStyledAttributes(styleableRes);Method m = ActivityInfo.class.getMethod("isTranslucentOrFloating", TypedArray.class);m.setAccessible(true);isTranslucentOrFloating = (boolean)m.invoke(null, ta);m.setAccessible(false);} catch (Exception e) {e.printStackTrace();}return isTranslucentOrFloating;}
在onCreate的时候,先判断,如果透明,直接把方向改为SCREEN_ORIENTATION_UNSPECIFIED:
@Overrideprotected void onCreate(Bundle savedInstanceState) {if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O && isTranslucentOrFloating()) {boolean result = fixOrientation();}super.onCreate(savedInstanceState);}private boolean fixOrientation(){try {Field field = Activity.class.getDeclaredField("mActivityInfo");field.setAccessible(true);ActivityInfo o = (ActivityInfo)field.get(this);o.screenOrientation = -1;field.setAccessible(false);return true;} catch (Exception e) {e.printStackTrace();}return false;}
然后在重写setRequestedOrientation设置方向的时候如果透明,直接不执行:
@Overridepublic void setRequestedOrientation(int requestedOrientation) {if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O && isTranslucentOrFloating()) {return;}super.setRequestedOrientation(requestedOrientation);}
链接:https://www.jianshu.com/p/f26774dc0f2e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章:
Only fullscreen opaque activities can request orientation
出现Only fullscreen opaque activities can request orientation是谷歌爸爸在安卓8.0版本时为了支持全面屏,增加了一个限制:如果是透明的Activity,则不能固定它的方向,因为它的方向其实是依赖其父Activity的(因为透明…...
前端实验(一)单页面应用的创建
实验目的 掌握使用vite创建vue3单页面程序命令熟悉所创建程序的组织结构熟悉单页面程序运行原理能够编写简单的单页面程序 实验内容 创建一个名为vue-demo的单页面程序编写简单的单页面程序页面运行单页面程序 实验步骤 使用vite创建单页面程序 创建项目名为目录vue-demo的…...
数字人小灿:始于火山语音,发于 B 端百业
火爆的数字人市场又有新消息来袭:火山语音的数字人小灿来了! 数字人小灿首曝视频 今年以来,在生成式AI浪潮的助推下,大量企业争相布局数字人赛道。市场之所以如此火热,是因为AI数字人已被视为人工智能时代智能交互的入…...
蓝桥杯刷题
欢迎来到Cefler的博客😁 🕌博客主页:那个传说中的man的主页 🏠个人专栏:题目解析 🌎推荐文章:题目大解析(3) 👉🏻最大降雨量 原题链接࿱…...
Go Metrics SDK Tag 校验性能优化实践
背景 Metrics SDK 是与字节内场时序数据库 ByteTSD 配套的用户指标打点 SDK,在字节内数十万服务中集成,应用广泛,因此 SDK 的性能优化是个重要和持续性的话题。本文主要以 Go Metrics SDK 为例,讲述对打点 API 的 hot-path 优化的…...
二叉树问题——前/中/后/层遍历问题(递归与栈)
摘要 博文主要介绍二叉树的前/中/后/层遍历(递归与栈)方法 一、前/中/后/层遍历问题 144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历 102. 二叉树的层序遍历 103. 二叉树的锯齿形层序遍历 二、二叉树遍历递归解析 // 前序遍历递归LC144_二叉树的前…...
Vue3问题:如何实现级联菜单的数据懒加载?
前端功能问题系列文章,点击上方合集↑ 序言 大家好,我是大澈! 本文约3100字,整篇阅读大约需要5分钟。 本文主要内容分三部分,第一部分是需求分析,第二部分是实现步骤,第三部分是问题详解。 …...
STM32-电源管理(实现低功耗)
电源管理 STM32 HAL库对电源管理提供了完善的函数和命令。 工作模式(高功耗->低功耗):运行、睡眠、停止、待机。 若备份域电源正常供电,备份域内的RTC都可以正常运行,备份域内的寄存器的数据会被保存,不…...
vue 自己捣鼓周日程日历组件
需求:想要一个周日程表,记录每天的计划,点击可查看详情。可自定义时间段通过后台获取时间段显示 分析: 通过需求,超级课程表app这款软件其中课表和这个需求很像,只不过这个需求第一列的时间段是自定义的,不是上午下午两个,但是原理都差不多 原本想找一些第三方插件使…...
【力扣】2127. (分类讨论 + 拓扑排序)参加会议的最多员工数
【力扣】2127. (分类讨论 拓扑排序)参加会议的最多员工数 文章目录 【力扣】2127. (分类讨论 拓扑排序)参加会议的最多员工数1. 题目介绍2. 思路(**分类讨论 拓扑排序**)3. 解题代码4. Danger参考 1. 题…...
Flutter——最详细(Map)使用教程
Map简介 键值对的集合,您可以使用其关联的键从中检索值。 普通的 HashMap是无序的(不保证顺序),LinkedHashMap 按键插入顺序迭代,而像 SplayTreeMap 这样的排序映射按排序顺序迭代键。 1,添加元素 addEntri…...
vue的入门第一课
Vue.js是一款流行的JavaScript框架,用于构建交互式Web应用程序。本文将详细介绍Vue.js的基础知识,包括Vue.js的历史、设计模式、构造函数参数、el、data、computed、method、watch以及差值的使用。 Vue.js是什么? Vue.js是一款用于构建用户…...
已解决:conda找不到对应版本的cudnn如何解决?
1.解决方法 配置深度学习环境时,打算安装cudatoolkit11.2和cudnn8.1,当使用conda install cudnn8.0时,却搜索不到这个版本的包,解决方法如下: conda search cudnn -c conda-forge然后就可以使用如下命令进行安装对应…...
大语言模型的学习路线和开源模型的学习材料《二》
第三层 LLMs to Artifact 第一重 langchain 【LLMs 入门实战 —— 十二 】基于 本地知识库 的高效 🤖langchain-ChatGLM 介绍:langchain-ChatGLM是一个基于本地知识的问答机器人,使用者可以自由配置本地知识,用户问题的答案也是基于本地知识生成的。【LLMs 入门实战 ——…...
Flask-SQLAlchemy事件钩子介绍
一、前言 前几天在搜资料的时候无意中看到有介绍SQLAlchemy触发器,当时感觉挺奇怪的,触发器不是数据库层面的概念吗,怎么flask-SQLAlchemy这个ORM框架会有这玩意。 二、SQLAlchemy触发器一个简单例子 考虑到效率博客表中有两个字段…...
C++——list
目录 list介绍 list的函数接口 构造函数 push_front和pop_front push_back和pop_back insert erase 迭代器 front和back size resize empty clear list::sort unique reverse 迭代器的实现 list介绍 list是一种可以在常数范围内在任意位置进行插入和删除的序列…...
【Linux】第九站:make和makefile
文章目录 一、 Linux项目自动化构建工具make/Makefile1.make/makefile工作现象2.依赖关系与依赖方法3.如何清理4.为什么这里我们需要带上clean5.连续的make6.特殊符号 二、Linux下实现一个简单的进度条1.回车换行2.缓冲区3.倒计时的实现 一、 Linux项目自动化构建工具make/Make…...
一文了解什么是WebSocket
WebSocket 允许我们创建“实时”应用程序,与传统 API 协议相比,该应用程序速度更快且开销更少。 一、WebSocket 是如何工作的 按照传统的定义,WebSocket是一种双工协议,主要用于客户端-服务器通信通道。它本质上是双向的&…...
redis是什么
redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。和Memcached类似。redis支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。 一、 基本…...
基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛
文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的人脸专注度…...
Chatbox:重新定义AI交互体验的全能客户端
Chatbox:重新定义AI交互体验的全能客户端 【免费下载链接】chatbox Powerful AI Client 项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox 一、认知层:探索Chatbox的核心价值与技术优势 在AI应用快速发展的今天,选择合适的…...
从Hello World到生产部署:Agent开发完整教程
从Hello World到生产部署:Agent开发完整教程引言:为什么现在是学习Agent开发的黄金时代? 痛点引入:从“脚本化工具人”到“自主智能助手”的瓶颈 各位读者朋友们,我是老周,一个在互联网摸爬滚打了12年、从传…...
Janus-Pro-7B步骤详解:如何上传本地图片+输入自然语言提问
Janus-Pro-7B步骤详解:如何上传本地图片输入自然语言提问 1. 认识Janus-Pro-7B:新一代多模态AI模型 Janus-Pro-7B是一个创新的多模态AI模型,它能够同时理解和生成文本与图像内容。这个模型的最大特点是采用了一种独特的自回归框架ÿ…...
智能车调参手记:我是如何用VOFA+和MATLAB,把云台电机调得‘跟手’的
智能车调参手记:从云台抖动到丝滑跟手的实战全记录 第一次参加智能车比赛时,云台电机给我上了深刻的一课——当目标快速移动时,镜头像醉汉一样摇晃不定,滞后和超调让自动瞄准成了笑话。经过72小时不眠不休的调试,终于让…...
WindowsCleaner:终极系统优化解决方案,彻底解决C盘空间不足问题
WindowsCleaner:终极系统优化解决方案,彻底解决C盘空间不足问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner WindowsCleaner是一款专为…...
Ostrakon-VL像素终端实战:生成符合ISO 20252市场调研报告
Ostrakon-VL像素终端实战:生成符合ISO 20252市场调研报告 1. 项目背景与价值 在零售与餐饮行业,市场调研数据的采集和分析一直是一项耗时耗力的工作。传统方法需要人工记录货架商品、价格标签、店铺环境等信息,不仅效率低下,还容…...
使用关键词 SEO 排名提升软件需要注意哪些事项
SEO 排名提升软件需要注意哪些事项 在当前数字化时代,网站的SEO排名提升软件(Search Engine Optimization Ranking Improvement Software)已经成为各大企业和网站运营者提高在搜索引擎上的可见度和流量的重要工具。选择和使用SEO排名提升软件…...
LFM2.5-1.2B-Thinking-GGUF保姆级教程:Windows/Mac/Linux三平台本地部署
LFM2.5-1.2B-Thinking-GGUF保姆级教程:Windows/Mac/Linux三平台本地部署 1. 平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的一款轻量级文本生成模型,特别适合在资源有限的设备上快速部署和使用。这个模型采用了GGUF格式,配合llama.c…...
YOLO目标检测完全指南:从入门到实践
YOLO目标检测完全指南:从入门到实践YOLO概述 YOLO(You Only Look Once)是目标检测领域的开创性算法,其核心思想非常直接——对图像只看一次,同时输出所有物体的位置和类别。 两阶段 vs 单阶段 传统R-CNN系列是"两…...
双向buck-boost电路仿真模型-储能双向DCDC变换器 电压电流双闭环PI控制 蓄电池充放电模式可切换 恒流充电_恒压输出 Matlab_Simulink模型
双向buck-boost电路仿真模型-储能双向DCDC变换器 电压电流双闭环PI控制 蓄电池充放电模式可切换 恒流充电/恒压输出 Matlab/Simulink模型核心控制算法:双闭环 PI 控制器 (MATLAB Function/S-Function) 这是模型的“大脑”。它需要根据模式切换,决定是外环…...
