热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码

这篇文章主要介绍了Android悬浮窗屏蔽悬浮窗外部所有的点击事件实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

Android可以在所有应用上方添加View,就是给WindowManager添加一个View,在创建的View的时候可以给这个View设置LayoutParams(android.view.WindowManager.LayoutParams.LayoutParams())属性,默认是屏蔽View区域以外的所有点击事件,即在显示View的时候,屏幕的其它区域都不可点击,包括菜单和返回键等。
当给LayoutParams设置合适的flag后,其它区域就可以响应点击了。

示例代码:

/**
  * 创建一个小悬浮窗。初始位置为屏幕的右部中间位置。
  * 
  * @param context 必须为应用程序的Context.
  */
 public static void createSmallWindow(Context context) {
  WindowManager windowManager = getWindowManager(context);
  int screenWidth = windowManager.getDefaultDisplay().getWidth();
  int screenHeight = windowManager.getDefaultDisplay().getHeight();
  if (smallWindow == null) {
   smallWindow = new FloatWindowSmallView(context);
   if (smallWindowParams == null) {
    smallWindowParams = new LayoutParams();
    smallWindowParams.type = LayoutParams.TYPE_PHONE;
    smallWindowParams.format = PixelFormat.RGBA_8888;
    smallWindowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
      | LayoutParams.FLAG_NOT_FOCUSABLE;
    smallWindowParams.gravity = Gravity.LEFT | Gravity.TOP;
    smallWindowParams.width = FloatWindowSmallView.viewWidth;
    smallWindowParams.height = FloatWindowSmallView.viewHeight;
    smallWindowParams.x = screenWidth;
    smallWindowParams.y = screenHeight / 2;
   }
   smallWindow.setParams(smallWindowParams);
   windowManager.addView(smallWindow, smallWindowParams);
   LogPrinter.i(TAG, "添加了小浮标View");
  }
 }
smallWindowParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_NOT_FOCUSABLE;

这行代码控制View以外的区域可以响应点击和触摸事件。如果没有设置flag,则View以外区域不能响应

以上所述是小编给大家介绍的Android悬浮窗屏蔽悬浮窗外部所有的点击事件实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


推荐阅读
  • 近期在维护旧项目时遇到一个问题,在iOS8环境下,UILabel无法正常显示文本。通过深入分析,我们发现这一现象与UILabel的使用方式有关,特别是在嵌套UILabel的情况下。 ... [详细]
  • 华为交换机VLAN间通信配置指南
    本文详细介绍了如何在华为交换机上配置VLAN间的通信,包括VLAN的创建、VLAN接口的配置以及Trunk和Access端口的设置。通过具体步骤指导读者完成网络配置,确保不同VLAN之间的设备能够互相访问。 ... [详细]
  • 本文讨论了在处理分页数据时常见的低级错误,并提供了优化后的代码示例,以减少重复代码并提高可读性和维护性。 ... [详细]
  • 本题要求根据给定的正整数数组,通过合理排列各元素顺序,生成并输出所有可能组合中的最小值。例如,对于数组{3, 32, 321},正确的输出应为321323。 ... [详细]
  • 本文介绍了DOM中用于获取节点信息的关键属性,包括父节点、子节点列表、首个及末个子节点、相邻兄弟节点以及节点类型等,同时提供了每个属性的具体使用说明。 ... [详细]
  • 端到端自动化测试框架设计 - 以京东商品搜索为例的Web应用测试
    本文将对前文介绍的京东商品搜索功能的端到端自动化测试进行总结,涵盖使用WebStorm、Node.js、Mocha、WebDriverIO及Selenium构建的测试环境,并特别讨论了如何通过会话保持用户登录状态。 ... [详细]
  • 利用Selenium框架解决SSO单点登录接口无法返回Token的问题
    针对接口自动化测试中遇到的SSO单点登录系统不支持通过API接口返回Token的问题,本文提供了一种解决方案,即通过UI自动化工具Selenium模拟用户登录过程,从浏览器的localStorage或sessionStorage中提取Token。 ... [详细]
  • 本文探讨了Flutter和Angular这两个流行框架的主要区别,包括它们的设计理念、适用场景及技术实现。 ... [详细]
  • 本文详细对比了MySQL中的InnoDB与MyISAM两种存储引擎,从性能、事务处理能力、锁机制等多个维度进行了深入探讨,旨在为数据库设计者提供选择依据。 ... [详细]
  • 本文深入探讨了锚点技术的应用与实现,通过十个关键点帮助读者全面理解锚点在网页设计中的作用。 ... [详细]
  • 本文提供最新的CUUG OCP 071考试题库,包含70道题目,旨在帮助考生更好地准备Oracle Certified Professional (OCP) 考试。 ... [详细]
  • 解析 HTTP 头 'Vary: Accept-Encoding' 的作用与重要性
    本文详细探讨了 'Vary: Accept-Encoding' HTTP 头的作用,即指导缓存系统(如代理服务器和 CDN)根据不同的编码需求存储和提供适当的资源版本,确保不同类型的客户端能够接收到适合自己的内容。 ... [详细]
  • 本文探讨了Lua中元表和元方法的使用,通过具体的代码示例展示了如何利用这些特性来实现类似C语言中的运算符重载功能。 ... [详细]
  • 拖拉切割直线 ... [详细]
  • 四月个人任务:Linux基础操作与网络管理
    本文介绍了两项主要任务:编写一个脚本来检测192.168.1.0/24子网中当前在线的IP地址,以及如何在Linux系统中挂载Windows网络共享目录。通过具体步骤和代码示例,帮助读者理解和掌握相关技能。 ... [详细]
author-avatar
深耐猪老汉11_245
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有