Android 刘海屏全屏适配(沉溺式状态栏,隐藏状态栏)

2023-11-08

在这里插入图片描述

    @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        requestWindowFeature(Window.FEATURE_NO_TITLE) //这行代码一定要在setContentView之前,不然会闪退
        setContentView(R.layout.activity_welcome)
        val window: Window = window
        window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
//        把布局画到刘海屏
        NotchScreenManager.getInstance().setDisplayInNotch(this)
        init()
    }

NotchScreenTool 适配刘海屏水滴屏等全面屏工具
具体的适配过程可以查看这篇博客:

Android刘海屏、水滴屏全面屏适配方案

安装
项目根目录的build.gradle中添加:

allprojects {
repositories {
google()
jcenter()
maven { url “https://jitpack.io” } // 添加jitpack
}
}
在module层级的build.gradle中添加依赖

implementation ‘com.github.smarxpan:NotchScreenTool:0.0.1’
使用
设置UI显示到刘海区域

NotchScreenManager.getInstance().setDisplayInNotch(Activity activity);
默认情况下,应用的界面不会绘制到刘海区域,调用此方法可允许绘制。

获取刘海区域信息

NotchScreenManager.getInstance().getNotchInfo(activity, new INotchScreen.NotchScreenCallback() {
@Override
public void onResult(INotchScreen.NotchScreenInfo notchScreenInfo) {
Log.i(TAG, "Is this screen notch? " + notchScreenInfo.hasNotch);
if (notchScreenInfo.hasNotch) {
for (Rect rect : notchScreenInfo.notchRects) {
Log.i(TAG, "notch screen Rect = " + rect.toShortString());
}
}
}
});

https://github.com/smarxpan/NotchScreenTool

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 刘海屏全屏适配(沉溺式状态栏,隐藏状态栏) 的相关文章

  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • android中向sqlite中插入大量数据

    目前 我必须一次向我的 Android 中插入超过 100 亿条数据 然而 内存不足的问题会使程序崩溃 sqlite 插入测试非常简单 只需使用 for 循环生成 sql 插入命令并通过 开始 和 提交 进行包装 private Array
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript

随机推荐

  • Scrapy中response介绍

    Scrapy中response介绍 response属性 url HTTP响应的url地址 str类型 status HTTP响应的状态码 int类型 headers HTTP响应的头部 类字典类型 可以调用get或者getlist方法对其
  • 2021-05-01

    华为硬件实习生机考和面试经验 华为硬件实习生 面试大概分为四部 机考 性格测试 技术面试 业务主管面试 机考考的内容主要有数电 模电 微机原理 通信原理 单片机 还有一些实验操作 甚至还有一些半导体材料的问题 题目考的很杂 具体就记得一两道
  • RGMII接口

    RGMII接口 即Reduced GMII 是RGMII的简化版本 将接口信号线数量从24根减小到14根 COL CRS端口状态指示信号 这里没有画出 时钟频率仍旧为125MHz TX RX数据宽度从8为变为4位 为了保持1000Mbps的
  • DS哈希查找--Trie树

    题目描述 Trie树又称单词查找树 是一种树形结构 如下图所示 它是一种哈希树的变种 典型应用是用于统计 排序和保存大量的字符串 但不仅限于字符串 所以经常被搜索引擎系统用于文本词频统计 它的优点是 利用字符串的公共前缀来节约存储空间 最大
  • g_main_loop_new (NULL, FALSE) 原理分析

    gtk main g main loop new原理分析 我们知道GUI应用程序都是事件驱动的 这些事件大部分都来自于用户 比如键盘事件 鼠标事件或笔点事件 还有一些事件来自于系统内部 比如定时事件 socket事件和其它文件事件等等 在没
  • React学习笔记:useCallback与useMemo

    在react中 useCallback与useMemo的主要作用在于进行性能的一个优化 这两者要怎么使用呢 另外这两者之间又有什么关系 在使用React时 当我们某一个值发生改变时 整个页面都会重新渲染一次 哪怕是一些没有任何变化的组件 函
  • Windows安装MySQL出现错误2503 2502 的解决办法

    1 打开任务管理器 Ctrl shift ESC 2 点击文件按钮 3 点击 运行新任务 按钮 4 输入下载好的MySQL安装文件的地址 文件名 比如我放在D MySQL文件夹里 文件名为 mysql installer web commu
  • 弹出层中的新建表单

    当用户访问一个展示了某个列表的页面 想新建一项但又不想跳转页面时 可以用 Modal 弹出一个表单 用户填写必要信息后创建新的项 Modal对话框 何时使用 需要用户处理事务 又不希望跳转页面以致打断工作流程时 可以使用 Modal 在当前
  • 13道C++面试问答(内存管理)

    new delete和malloc free之间有什么关系 int p new int 2 int q int malloc 2 sizeof int new与delete直接带具体类型的指针 malloc和free返回void类型的指针
  • python-爬虫-selenium总结

    爬虫 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 爬虫 前言 使用场景 一 前期准备工作 二 基本的操作 案例 使用selenium利用验证码识别平台 超级鹰 进行各种类型验证码验证 验证根据图像识别验证码输
  • JS:正则表达式中的替换 replace(内容包含匹配模式)

    replace 方法可以实现替换字符的操作 用来替换的参数可以是字符串或正则表达式 语法格式 第一个参数 被替换的可以是字符串也可以是正则表达式 第二个参数 替换为新的字符串 它返回的值是一个替换完的新字符串 需要接收过来 str repl
  • Ubuntu18.04下载vscode速度较快的方式

    各种原因导致自己重装系统 又再一次踏上了重装软件和文件配置的过程 在Linux操作系统上下载vscode一直是比慢的意见事 下载vscode我了解的大概有三种方式可以下载vscode 如果网速不是很理想的情况下 建议第三种方法 1 去官方文
  • .刷脸支付成为生活的重要组成部分

    在步入高速发展的信息化时代后 众多与互联网领域相关的产业开始崛起 在改变人们生活方式的同时 又极大的推动了社会的发展 在众多互联网产业当中 最引人注目的当属移动支付了 移动支付的诞生摒弃了以往繁琐的交易过程 把关键的部分交给一部手机 要说移
  • 处理器的计算能力如何计算

    我们常用双精度浮点运算能力衡量一个处理器的科学计算的能力 就是处理64bit小数点浮动数据的能力 支持AVX2的处理器的单指令的长度是256bit 每个intel核心假设包含2个FMA 一个FMA一个时钟周期可以进行2次乘或者加的运算 那么
  • mysql怎么卸载_怎样把mysql卸载干净?Mysql怎么卸载干净重装?

    很多朋友装mysql数据库时出现无法安装的情况 更可怕的是删除相关文件仍然无法安装 很伤脑筋 相信很多朋友都有过这种经历 其实导致数据无法安装的原因大多数是因为之前安装的Mysql数据没有卸载干净 导致第二次安装不 那么mysql安装失败后
  • 20、numpy——IO

    NumPy IO Numpy 可以读写磁盘上的文本数据或二进制数据 NumPy 为 ndarray 对象引入了一个简单的文件格式 npy npy 文件用于存储重建 ndarray 所需的数据 图形 dtype 和其他信息 常用的 IO 函数
  • C++笔记——std::min_element和std::max_element

    https blog csdn net breeze5428 article details 25918925 参考网页 http en cppreference com w cpp algorithm min element 主要有两种用
  • LangChain 手记 Conclusion结语

    整理并翻译自DeepLearning AI LangChain的官方课程 Conclusion Conclusion 结语 本系列短课展示了大量使用LangChain构建的大语言模型应用 包括处理用户反馈 文档上的问答系统甚至使用LLM来决
  • 艾伦·麦席森·图灵——如谜的解谜者

    艾伦 麦席森 图灵 Alan Mathison Turing 1912年6月23日 1954年6月7日 英国数学家 逻辑学家 被称为计算机科学之父 人工智能之父 科学美国人 这样评价图灵性情矛盾的一生 个人生活隐秘又喜欢大众读物和公共广播
  • Android 刘海屏全屏适配(沉溺式状态栏,隐藏状态栏)

    RequiresApi Build VERSION CODES LOLLIPOP override fun onCreate savedInstanceState Bundle super onCreate savedInstanceSta