android添加悬浮窗,在Android中使用WindowManager实现悬浮窗口
最近在做一个项目的过程中,客户提出要一个能悬浮于所有应用的界面。下图右侧这个界面就是需要实现的悬浮于所有应用之上的视图。
下面就介绍一下如何通过WindowManager来实现这个效果。
通过WindowManager的addView()方法,并设置WindowManager.LayoutParams的相关属性,就可以往WindowManager中加入所需要的View,而根据WindowManager.LayoutParams属性不同,也就能实现不同的效果。比如创建系统顶级窗口,实现悬浮窗口效果。如果需要将View从WindowManager中移除,只需要调用removeView()即可。
下面以一个简单的例子来解释一下如何实现悬浮窗口效果。
首先,得到WindoeManager对象:
WindowManager wManager = getApplicationContext().getSystemService( Context. WINDOW_ SERVICE);
其次,得到WindowManager.LayoutParams对象,为后续设置相关参数做准备:
private WindowManager.LayoutParams wmParams=new WindowManager.LayoutParams();
接着,设置相关的窗口布局参数,要实现悬浮窗口效果,主要需要设置的参数有:
wmParams.type = LayoutParams.TYPE_PHONE; // 设置window type wmParams.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明 /* * 下面的flags属性的效果形同“锁定”。 悬浮窗不可触摸,不接受任何事件,同时不影响后面的事件响应。 */ wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCHABLE;
wmParams.gravity = Gravity.RIGHT| Gravity. CENTER_VERTICAL; // 调整悬浮窗口至右侧中间 // 以屏幕左上角为原点,设置x、y初始值 wmParams.x = 0; wmParams.y = 0;
// 设置悬浮窗口长宽数据 wmParams.width = WindowManager.LayoutParams.WRAP_CONTENT;; wmParams.height =WindowManager.LayoutParams.WRAP_CONTENT;;
然后,就可以将需要加到悬浮窗口中的View加入到窗口中了:
if(view.getParent==null)//如果view没有被加入到某个父组件中,则加入WindowManager中 wManager.addView(view,wmParams);
其中,view为需要放到悬浮窗口中的视图组件。
如果要将其从WindowManager中移除,则可以执行以下语句:
if(view.getParent()!=null) wManager.removeView(view);
最后,还有需要注意的是,如果要用悬浮窗口,需要在AndroidManifest.xml中加入如下的权限:
android添加悬浮窗,在Android中使用WindowManager实现悬浮窗口相关推荐
- Android 悬浮窗功能实现(微信语音通话悬浮窗效果实现)
目录 1.基本介绍 2.代码示例 3.实现效果及便捷工具类 4.仿微信语音通话悬浮窗效果实现 4.1 需求分析及效果展示 4.2 实现 5.最后 1.基本介绍 Android 界面绘制都是通过 Win ...
- android 微信浮窗实现_Android仿微信视屏悬浮窗效果
在项目中需要对接入的腾讯云音视频,可以悬浮窗显示,悬浮窗可拖拽,并且在悬浮窗不影响其他的activity的焦点. 这个大神的文章Android基于腾讯云实时音视频仿微信视频通话最小化悬浮,他讲的是视频 ...
- android 仿微信来电_Android 悬浮窗功能实现(微信语音通话悬浮窗效果实现)
目录 1.基本介绍 2.代码示例 3.实现效果及便捷工具类 4.仿微信语音通话悬浮窗效果实现 4.1 需求分析及效果展示 4.2 实现 5.最后 1.基本介绍 Android 界面绘制都是通过 Win ...
- android悬浮窗组件,Android 悬浮窗,悬浮view功能实现
写在前面:本文仅个人开发时遇到的问题及个人解决办法的记录. 国内各个手机厂商对ROM魔改的比较严重,还没有做兼容性测试,所以碰到沙雕的机子的时候,请再去寻找适配方法 最近项目开发中,需要实现一个悬浮窗 ...
- android悬浮窗 tab,Android WindowManager悬浮窗
Android WindowManager悬浮窗 Android WindowManager悬浮窗的实现代码不难,悬浮窗创建成功后将悬浮悬停在设备的屏幕桌面上.悬浮窗通常使用情况:假设APP需要 ...
- 安卓股票悬浮窗_Android 实现可任意拖动的悬浮窗功能(类似悬浮球)
最近开发项目中,有个在屏幕上任意拖动的悬浮窗功能,其实就是利用 WindowManager的api来完成这个需求,具体的实现的功能如下: 1.自定义view import android.conten ...
- 突破小米悬浮窗权限控制--不需要权限的悬浮窗
突破小米悬浮窗权限控制–不需要权限的悬浮窗 在上一篇文章讲了Android的Toast拓展,在原生Toast基础上对显示时长和显示动画做了二次封装,强化了Toast的部分功能.也分析了对于二次封装的E ...
- Android展开悬浮窗功能,Android 悬浮窗 (附圆形菜单悬浮窗)
序言 Android悬浮窗的实现,主要有四个步骤: 1. 声明及申请权限 2. 构建悬浮窗需要的控件 3. 将控件添加到WindowManager 4. 必要时更新WindowManager的布局 一 ...
- android 微信缩小通话界面_Android 悬浮窗功能实现(微信语音通话悬浮窗效果实现)...
1.基本介绍 Android 界面绘制都是通过 WindowManager 对象可通过获取 WINDOW_SERVICE 系统服务得到,并因为 WindowManager 继承于 ViewManage ...
最新文章
- 大数据分布式集群搭建(9)
- 使用np.load()加载数据 报错 Object arrays cannot be loaded when allow_pickle=False
- 每周分享五个 PyCharm 使用技巧(一)
- 数学 :追求真和美的学问
- VBA合并csv文件
- 录入商品信息的c语言,超市商品信息系统设计报告及程序C语言.doc
- win10 将电脑以太网连接生成热点
- U盘加载硬盘控制卡驱动安装Windows 2003 指南
- [swift] LeetCode 347. Top K Frequent Elements
- 【#】Spring3 MVC 注解(二)---@RequestMapping
- 实战CSS:静态百度首页实现
- javamail 解码 base64 html格式邮件_关于JavaMail,我遇上的那些史前巨坑...(建议收藏)
- 基于用户的协同过滤推荐算法(整合)
- 【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片
- python 修改ubuntu 的ip
- 计算机桌面空白地方鼠标右击没有属性选项,电脑右键没有属性选项_电脑右键没有显卡属性...
- 解决谷歌浏览器最新chrome9+ 版本CORS跨域问题
- catagory,action,data隐式启动匹配规则
- 使用Canal ClientAdapter实现Mysql的DDL、DML同步到PostgreSQL
- error: cannot lock ref ‘refs/remotes/origin/master‘
热门文章
- * word 2000 与 word 2003 版本兼容性问题
- 【大数据框架及实战2】---初识
- 远端WWW服务支持TRACE请求
- matlab中如何用数组绘图,matlab 基础学习(1)——数组,矩阵操作和绘图基础学习...
- 绿蓝色悖论(新归纳之谜)?
- 平面设计需要学习什么,平面设计是什么;夏雨老师
- 用 Python 写了一个表白神器,照片隐藏表白话语!
- 【RTT】SPI Flash 与文件系统(3):DFS 和 EasyFlash
- 如何更清楚的购买自己需要的电脑——配置篇
- 年轻人的第一个APM-Skywalking