最近在做一个项目的过程中,客户提出要一个能悬浮于所有应用的界面。下图右侧这个界面就是需要实现的悬浮于所有应用之上的视图。

下面就介绍一下如何通过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实现悬浮窗口相关推荐

  1. Android 悬浮窗功能实现(微信语音通话悬浮窗效果实现)

    目录 1.基本介绍 2.代码示例 3.实现效果及便捷工具类 4.仿微信语音通话悬浮窗效果实现 4.1 需求分析及效果展示 4.2 实现 5.最后 1.基本介绍 Android 界面绘制都是通过 Win ...

  2. android 微信浮窗实现_Android仿微信视屏悬浮窗效果

    在项目中需要对接入的腾讯云音视频,可以悬浮窗显示,悬浮窗可拖拽,并且在悬浮窗不影响其他的activity的焦点. 这个大神的文章Android基于腾讯云实时音视频仿微信视频通话最小化悬浮,他讲的是视频 ...

  3. android 仿微信来电_Android 悬浮窗功能实现(微信语音通话悬浮窗效果实现)

    目录 1.基本介绍 2.代码示例 3.实现效果及便捷工具类 4.仿微信语音通话悬浮窗效果实现 4.1 需求分析及效果展示 4.2 实现 5.最后 1.基本介绍 Android 界面绘制都是通过 Win ...

  4. android悬浮窗组件,Android 悬浮窗,悬浮view功能实现

    写在前面:本文仅个人开发时遇到的问题及个人解决办法的记录. 国内各个手机厂商对ROM魔改的比较严重,还没有做兼容性测试,所以碰到沙雕的机子的时候,请再去寻找适配方法 最近项目开发中,需要实现一个悬浮窗 ...

  5. android悬浮窗 tab,Android WindowManager悬浮窗

     Android WindowManager悬浮窗 Android WindowManager悬浮窗的实现代码不难,悬浮窗创建成功后将悬浮悬停在设备的屏幕桌面上.悬浮窗通常使用情况:假设APP需要 ...

  6. 安卓股票悬浮窗_Android 实现可任意拖动的悬浮窗功能(类似悬浮球)

    最近开发项目中,有个在屏幕上任意拖动的悬浮窗功能,其实就是利用 WindowManager的api来完成这个需求,具体的实现的功能如下: 1.自定义view import android.conten ...

  7. 突破小米悬浮窗权限控制--不需要权限的悬浮窗

    突破小米悬浮窗权限控制–不需要权限的悬浮窗 在上一篇文章讲了Android的Toast拓展,在原生Toast基础上对显示时长和显示动画做了二次封装,强化了Toast的部分功能.也分析了对于二次封装的E ...

  8. Android展开悬浮窗功能,Android 悬浮窗 (附圆形菜单悬浮窗)

    序言 Android悬浮窗的实现,主要有四个步骤: 1. 声明及申请权限 2. 构建悬浮窗需要的控件 3. 将控件添加到WindowManager 4. 必要时更新WindowManager的布局 一 ...

  9. android 微信缩小通话界面_Android 悬浮窗功能实现(微信语音通话悬浮窗效果实现)...

    1.基本介绍 Android 界面绘制都是通过 WindowManager 对象可通过获取 WINDOW_SERVICE 系统服务得到,并因为 WindowManager 继承于 ViewManage ...

最新文章

  1. 大数据分布式集群搭建(9)
  2. 使用np.load()加载数据 报错 Object arrays cannot be loaded when allow_pickle=False
  3. 每周分享五个 PyCharm 使用技巧(一)
  4. 数学 :追求真和美的学问
  5. VBA合并csv文件
  6. 录入商品信息的c语言,超市商品信息系统设计报告及程序C语言.doc
  7. win10 将电脑以太网连接生成热点
  8. U盘加载硬盘控制卡驱动安装Windows 2003 指南
  9. [swift] LeetCode 347. Top K Frequent Elements
  10. 【#】Spring3 MVC 注解(二)---@RequestMapping
  11. 实战CSS:静态百度首页实现
  12. javamail 解码 base64 html格式邮件_关于JavaMail,我遇上的那些史前巨坑...(建议收藏)
  13. 基于用户的协同过滤推荐算法(整合)
  14. 【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片
  15. python 修改ubuntu 的ip
  16. 计算机桌面空白地方鼠标右击没有属性选项,电脑右键没有属性选项_电脑右键没有显卡属性...
  17. 解决谷歌浏览器最新chrome9+ 版本CORS跨域问题
  18. catagory,action,data隐式启动匹配规则
  19. 使用Canal ClientAdapter实现Mysql的DDL、DML同步到PostgreSQL
  20. error: cannot lock ref ‘refs/remotes/origin/master‘

热门文章

  1. * word 2000 与 word 2003 版本兼容性问题
  2. 【大数据框架及实战2】---初识
  3. 远端WWW服务支持TRACE请求
  4. matlab中如何用数组绘图,matlab 基础学习(1)——数组,矩阵操作和绘图基础学习...
  5. 绿蓝色悖论(新归纳之谜)?
  6. 平面设计需要学习什么,平面设计是什么;夏雨老师
  7. 用 Python 写了一个表白神器,照片隐藏表白话语!
  8. 【RTT】SPI Flash 与文件系统(3):DFS 和 EasyFlash
  9. 如何更清楚的购买自己需要的电脑——配置篇
  10. 年轻人的第一个APM-Skywalking