android - 在 Android 上绘制边缘叠加
问题描述
我尝试在互联网上搜索有关屏幕覆盖/绘制 android 应用程序的信息。我知道从Android O开始,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY
已弃用。
我想制作像 Muviz Edge 这样的叠加视图。但我找不到如何像那个应用程序那样在状态栏下方或上方绘图。
Muviz 应用程序如何在不使用的情况下做到这一点
TYPE_SYSTEM_OVERLAY Flag
.
解决方案
在互联网上搜索了几个小时并测试了不同的可能标志后,我得到了自己的答案
WindowManager.LayoutParams
Flags 我意识到我在寻找错误的方向。
为了绘制整个屏幕,第四个参数
WindowManger.LayoutParams
应该
WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
而不是其他标志。
窗口管理器布局参数的完整代码是
val LAYOUT_FLAG: Int
LAYOUT_FLAG = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
} else {
WindowManager.LayoutParams.TYPE_TOAST
}
params = WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
LAYOUT_FLAG,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
or WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT
)
推荐阅读
- javascript - 如何通过 jQuery 在字段集中获取选定的单选按钮值?
- wordpress - 自定义
tag for all pages and posts on a WordPress website</h1> <div id="body"><p>I have been researching a problem that I have and came across this discussion:</p> <p><a href="https://gtranslate.io/forum/how-not-transl - javascript - 一个
可能只有一个子元素 - reactjs - 使用 reactjs 删除验证码上的警告
- java - 将 SVN gradle 项目直接签出到 eclipse 中?
- php - 对等方重置 TCP 连接 - Salesforce - PHP
- apache-spark - Apache spark 结构化流 2.3.0 如何让接收器知道新行是对现有行的更新?
- sparql - Jena SPARQL 查询执行卡住
- sql - 如何列出表中的所有外键?
- python - 如何在 tkinter GUI 上使按钮变平