WindowManager 和window 悬浮窗口

Android WindowManager & Window属性 & 添加悬浮窗的示例代码 Android中用来管理Window的接口类,具体实现类是WindowManagerImpl,而最终是交给WindowManagerService来真实实现相应功能。Window的属性定义在WindowManager.LayoutParams类中。相关属性有很多种,与应用开发最密切的有四类,分别是Type(Window的类型)、Flag(Window的标志)、SoftInputMode(软键盘相关模式)、位置大小相关属性。悬浮窗是通过WindowManager添加Window窗口来实现的,添加窗口类型的是 阅读详情

实现的过程本质上是将一个自定义的view 放在window这个布局中

1.获取WindowManager

  wm= (WindowManager) getSystemService(WINDOW_SERVICE);</span>

可以执行 addview(),removeview(),updataview();

2.设置Layoutparams参数 (子控件告诉父布局自己想要变成什么样子)

mLayoutParams =new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,0,0, PixelFormat.TRANSPARENT);
        


这些基本的参数都要有:

params.height = WindowManager.LayoutParams.WRAP_CONTENT;
		params.width = WindowManager.LayoutParams.WRAP_CONTENT;
		//宽高,位置,
		
		params.gravity = Gravity.LEFT | Gravity.TOP; //这个关系到坐标点!
		params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE //这个关系到触控事件!
		/* | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE */
		| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
		params.format = PixelFormat.TRANSLUCENT;     //透明
	
		params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; //层级相当于显示的优先级。系统级别需要添加权限!

3.最后添加 删除时注意判空,更新时
wm.addView(view,mLayoutParams);//添加方法
wm.updateViewLayout(view,mLayoutParams);//更新

主线程内完成!


注意:

1:想要让它跟随手指移动 自定义触摸事件时,要用偏移量改变mLayoutPatams 的位置,因为获取的mLayoutParams.x 和y的值都是左上角的点的位置。

2:实现动画的方式,是开启一个透明的Activity并设置动画。Intent.flags要设置为一个新的活动任务栈,在开启活动。透明Activity主题名:

  android:theme="@android:style/Theme.Translucent.NoTitleBar"




Android WindowManager 移动端开发 这里指定了悬浮窗口的宽度和高度为自适应,并设置了悬浮窗口的类型为TYPE_APPLICATION_OVERLAY,这样才能在其他应用程序窗口之上显示。开发者可以根据实际需求,进一步定制和扩展悬浮窗口的功能和交互方式。在移动端应用程序开发中,Android WindowManager(窗口管理器)是一个重要的组件,它负责管理应用程序中的窗口以及与用户界面的交互。最后,我们调用windowManager.addView方法将悬浮窗口的视图添加到WindowManager中,完成了悬浮窗口的创建和显示过程。 阅读详情

相关推荐

Android WindowManager简析

WindowManager

菜鸟博客 2594

Android悬浮窗使用小结

Android的窗口体系中,WindowManager占有非常重要的地位,它封装了添加、移除、更新窗口的方法,它是Activity、View的更加底层的管理类,使用WindowManager的其中一个例子就是制作悬浮窗或悬浮球之类的悬浮组件,这种悬浮组件不依赖某个Activity,它可以在任何界面显示(只要你愿意)。    这篇文章将对如何使用悬浮球做简单总结,即使在android6.0下(an

阳光玻璃杯 1万+

Android悬浮窗口开发实战示例

在当今的应用生态中,悬浮窗口已经成为提升用户体验的重要组件之一。本章旨在介绍悬浮窗口的概念,探讨其核心功能和实现方式,以及它在多种场景下的实用价值。悬浮窗口是一种特殊的用户界面元素,它可以浮于应用界面之上,通常用于显示重要信息、提供快捷操作或作为辅助功能。它不依赖于应用程序的主界面,因而具有较强的灵活性。在Android平台上,权限允许应用在其他应用的上方显示悬浮窗口。这种权限对于开发工具类应用、快捷操作面板或自定义通知栏等场景至关重要。

weixin_35705784的博客 596

Android悬浮窗的实现--可以置顶,可以设置优先级的view

制作一个类似关机倒计时的弹窗,如果有多个弹窗的存在,可以设置view的显示优先级

zy_style的博客 1万+

Android悬浮窗口完整Demo实战项目

Android悬浮窗口(Floating Window)是一种脱离Activity生命周期独立显示的视图组件,其核心依托于服务进行视图层级管理。通过向系统请求特定的窗口类型(如),应用可在其他界面之上绘制UI元素,实现跨应用的视觉覆盖。该机制基于Z轴分层模型,由SurfaceFlinger负责最终合成显示。自定义布局是悬浮窗功能实现的第一步,它决定了用户所见的外观形态与操作方式。良好的布局设计不仅提升用户体验,还能有效降低资源消耗并增强可维护性。

weixin_32005771的博客 1222

深入解析Cuk、Zeta和Sepic拓扑:非隔离型开关电源的设计奥秘

本文深入解析了Cuk、Zeta和Sepic三种非隔离型开关电源拓扑的设计奥秘。它们均能实现升降压转换,但特性各异:Cuk拓扑输出反向电压,输入输出纹波极低;Sepic拓扑输出同极性电压,应用广泛;Zeta拓扑输出纹波小,适合精密供电。文章详细对比了其电路结构、工作原理、核心公式及选型指南,帮助工程师根据输入电压范围、输出极性及纹波要求,灵活选择最合适的拓扑方案。

weixin_28308325的博客 476

笔记91--WindowManager.LayoutParams应用之实现悬浮窗口

一、获取WindowManager服务 wm=(WindowManager) getSystemService(Context.WINDOW_SERVICE); 二、设置WindowManager.LayoutParams参数 WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams(); wmParams

mwj_88的专栏 2584

Source Insight 4.0舒适黑主题 仿心情看的舒服就行

Source Insight 4.0主题 仿心情看的舒服就行 source insight自带的主题怎么看怎么别扭,于是在试用全网各种主题配色后,在其中一个基础上自定义了c/c++的语法配色 截全图有点糊 函数定义 全局变量 局部变量 枚举变量引用 全局变量引用及结构体成员 宏定义引用 ----------------------后面会再把主题文件贴上来-------------- ...

weixin_43443402的博客 1303

Android 悬浮窗层级/WindowManager Type限制适配

WindowManager 悬浮窗大家应该经常用了,在这咱不说他的具体实现,也不谈他的源码分析。 主要探讨权限适配,层级介绍,还有可能的Bug。 一、层级 悬浮层本质上是将view送给WindowManager去玩,它将view设置不同类型,也就有了不同的层级(z轴)展示,不一样的价钱不一样的服务。 总体来说有应用窗口(APPLICATION_WINDOW)、子窗口(SUB_WIN...

空名先生 1万+

【事件相机实战】噪声识别与智能滤波技术解析

本文深入解析了事件相机应用中关键的噪声识别与智能滤波技术。针对背景活动噪声、阈值波动噪声、热点噪声及运动边缘尾迹等核心噪声类型,文章剖析了其成因与特征,并详细介绍了从经典的时空相关性滤波、热点像素滤除到前沿的深度学习(如EDnCNN)等实战滤波方法,旨在帮助开发者在保证低延迟的前提下,有效提升事件流数据质量。

weixin_29169899的博客 439

自举电容的工作原理-3句话总结

1、一道面试题 照例,先抛出来一道面试题:“Buck电路的SW引脚通常会放置一颗小电容,这颗电容有什么用?”。这个问题问得比较细,非常考验被面试者的硬件基本功。 2、似懂非懂的答案 有小伙伴可能不太清楚这颗电容的作用,回答不上来。也有小伙伴脱口而出:自举电容,用来做升压的。但后面好像说不出来具体逻辑。 没具体了解过,答不上来,也没啥可惜的。但是了解过一点,但又似懂非懂的这种,给出的答案只是轻轻点水或者千篇一律,那无疑是错过了一个加分项。 3、异步Buck的自举环路组成 既然是针对Buck电路讲自举电容,前面

ltqdxl的博客 3万+

Android WindowManager.addview添加悬浮框

Android WindowManage.addview方式添加悬浮窗

ulddfhv的专栏 5614

简单的服务器取证

记一次入门服务器取证——药品直销网,涵盖旧版本宝塔、静态IP的配置更改、代码的理解

m0_74559567的博客 3756

android固定悬浮窗口,Android Window 和 WindowManager实现悬浮小窗

window 表示一个窗口概念 ,我们在桌面看到一个悬浮的窗口这个就需要 window来实现,window是一个抽象类,实现是PhoneWindow,android 所有的视图都是通过window来呈现的,activity ,dialog,toast,都是附加在window上,因此window是view的管理者先看一下window的使用吧WindowManager windowManager = ...

weixin_35472986的博客 563

基于YOLO26深度学习框架的智能停车场管理系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的智能停车场管理系统实现方法。系统采用CSPDarknet53作为主干网络,结合特征金字塔和注意力机制提升检测性能。通过数据预处理、模型训练和停车分析三个主要模块,实现了车位占用检测、车辆类型识别等功能。实验结果表明,该方法在检测精度和速度方面表现优异,为智能停车场管理提供了有效的技术解决方案。

一键难忘的博客 571

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是基于StarNet的YOLOv11轻量化改进方法研究。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 5986

Android中的Window / WindowManager

Android中的Window / WindowManager

QYgujingjing的专栏 639

RT-DETR改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改进

1️⃣本专栏已更新260多种不同的改进方法,所使用并改进的每一个模块均包含详细的模块分析、原理讲解、个人总结、多种改进方式以及完整的修改流程,所有改进100%可直接运行。2️⃣所有改进点均为近三年顶会,顶刊提出的先进算法,将其融入到中,紧跟学术热点,适应不同的任务场景。3️⃣团队内发表数篇SCI论文,熟悉完整的发表流程,订阅专栏即可进群享受模型训练、模型改进、论文写作、投稿选刊,从入门到论文的各种答疑内容。4️⃣专栏内容会持续更新,最近更新时间:2024-12-4。项目介绍在大家购买专栏后,加入学习

Limiiiing的博客 2万+

关于Window和WindowManager的一点愚见(添加,删除,更新)

正文先看看自己要编写一个WindowManager该如何实现。 先看看MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a

yujunyu12的博客 4108

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android中悬浮窗口的实现原理和示例代码

转载自:http://webservices.ctocio.com.cn/202/12148702.shtml 调用WindowManager,并设置WindowManager.LayoutParams的相关属性,通过WindowManager的addView方法创建View,这样产生出来的View根据WindowManager.LayoutParams属性不同,效果也就不同了。比如创建系统顶级

694

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使用WindowManager实现悬浮窗口

1)如果要用悬浮窗口,需要在AndroidManifest.xml中加入如下的权限:           通过WindowManager的addView()方法,并设置WindowManager.LayoutParams的相关属性,就可以往WindowManager中加入所需要的View,而根据WindowManager.LayoutParams属性不同,也就能实现不同的效果。比如创建系统

ice6015的专栏 765

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Termux:Float开发解析:深入理解悬浮窗口实现原理与核心组件

Termux:Float是一款为Termux打造的悬浮窗口插件,它能让终端以浮动窗口形式显示,极大提升了多任务处理效率。本文将深入剖析其核心实现原理,带你了解Android悬浮窗口开发的关键技术与最佳实践。 ## 一、核心组件架构解析 Termux:Float的实现依赖于多个关键组件的协同工作,这些组件构成了悬浮窗口功能的基础框架。 ### 1.1 服务组件:TermuxFloatServi

gitblog_00292的博客 264

在Android中使用WindowManager实现悬浮窗口

通过WindowManager的addView()方法,并设置WindowManager.LayoutParams的相关属性,就可以往WindowManager中加入所需要的View,而根据WindowManager.LayoutParams属性不同,也就能实现不同的效果。比如创建系统顶级窗口,实现悬浮窗口效果。如果需要将View从WindowManager中移除,只需要调用removeView(

xwq911的专栏 659

WindowManager

mWm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); wmParams = new WindowManager.LayoutParams(); wmParams.type = LayoutParams.TYPE_PHONE; // 设置window type wmParams.format = PixelFormat.

546201056 612

Android 弹出自定义悬浮窗“permission denied for window type”报错处理

在Android系统中,如果应用需要弹出一个悬浮窗口, 就需要申请一项特殊权限“android.permission.SYSTEM_ALERT_WINDOW” Android O之前 在Android O之前的系统中申请了该权限后,再给对应的window设置 WindowManager.LayoutParams params = new WindowManager.LayoutParams...

限量发行的专栏 3392
上一篇: 利用组合控件实现布局文件抽取复用--自定义view属性抽取
下一篇: Java反射机制和TelephoneManager电话监听
Nela
博客等级 码龄11年 9粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值