【Android】修复部分系统拖拽窗口导致弹窗消失的问题

server/2024/10/9 17:05:08/
问题

PopupWindow内部对外部事件进行了过滤,如果触发外部事件,会自动关闭弹窗

有些处理得不够好的系统,拖拽边缘时会被误认为是Outside事件来处理,这样就导致了弹窗关闭

方法

对TouchEvent进行拦截,过滤混淆事件

代码
    override fun setContentView(view: View) {super.setContentView(view)interceptOutsideEvent()}@SuppressLint("ClickableViewAccessibility")private fun interceptOutsideEvent() {setTouchInterceptor { v, e ->val decorView = contentView.rootViewif ((e.action == MotionEvent.ACTION_DOWN)) {val outside = e.x < 0 || e.x >= decorView.measuredWidth || e.y < 0 || e.y >= decorView.measuredHeightif (outside) {ToastUtils.show("outside")return@setTouchInterceptor true}} else if (e.action == MotionEvent.ACTION_OUTSIDE) {ToastUtils.show("outside")return@setTouchInterceptor true}return@setTouchInterceptor false}}

http://www.ppmy.cn/server/129366.html

相关文章

Android 安装过程五 MSG_INSTALL消息的处理 安装

现在马上进入正式的安装流程。   从前面文章 Android 安装过程四 MSG_INSTALL消息的处理 安装之前的验证知道&#xff0c;在验证之后没有什么问题的情况下&#xff0c;会回调onVerificationComplete()方法&#xff0c;它位于PackageInstallerSession类中。 private void onVe…

C++面试之继承和多态

(倒反天罡) 概念选择题答案&#xff08;0411-0422&#xff09; 1 C 2 A 3 B 4 B 5 D 6 D 7 D 8 C 9 D 10 D 11 C 12 E 13 C 继承有什么作用&#xff1f; 继承可以重写或重定义父类中的一些方…

汽车追尾为什么是后车的责任?

简单点说&#xff1a;因为人后面没有长眼睛。 结论 在汽车追尾事故中&#xff0c;通常情况下后车被认为是责任方的原因在于交通法规对驾驶安全标准的约定和实践中的责任识别原则。虽然追尾事故常见地被归责于后车&#xff0c;但具体判断并不是绝对的&#xff0c;仍需综合多种…

阿里云融合认证中的App端一键登录能力

在如今的移动互联网环境中&#xff0c;App端的一键登录功能逐渐成为提升用户体验的关键。用户不再需要繁琐的注册流程或输入短信验证码&#xff0c;一键即可通过手机号码完成登录。而阿里云融合认证中&#xff0c;一键登录能力为移动应用提供了一个简单、便捷且安全的用户身份验…

大屏娱乐体验新标杆:海信发布全新一代AI电视

在金秋送爽的9月29日&#xff0c;海信以一场盛大的“BIG PLAN百吋风暴”秋季新品发布会&#xff0c;正式揭开了AI电视新时代的序幕。 作为本场发布会上最耀眼的明星&#xff0c;海信AI电视E7N系列凭借无与伦比的AI画质技术和极致性能&#xff0c;引领大屏娱乐体验迈入全新境界&…

scanMiR:使用R语言预测 miRNA 结合位点

生信碱移 scanMiR 结合预测 scanMiR&#xff0c;一款R语言工具包&#xff0c;能够高效地扫描任何自定义序列上的典型和非典型miRNA结合位点&#xff0c;估计解离常数并预测聚合的转录物抑制。 最近&#xff0c;几项高通量研究试图阐明miRNA–mRNA靶向的生化决定因素。在一项发…

ChatGPT+AI项目实战:打造多端智能虚拟数字人

ChatGPTAI项目实战&#xff1a;打造多端智能虚拟数字人 越是就业难的情况下&#xff0c;就要越不断的提升自己的能力。前端开发饱和&#xff0c;Java开发饱和&#xff0c;还有什么不饱和呢&#xff0c;AI开发&#xff01; 本文将详细介绍一门旨在通过项目实战&#xff0c;融合…

Linux bash脚本 远程开发环境配置

参考资料 太香了&#xff0c;VSCode远程开发插件&#xff0c;值得一试Visual Studio Code で Remote SSH する。Managing extensions 目录 一. 远程开发必备二. 连接远程开发服务器三. 安装远程开发插件 一. 远程开发必备 ⏹ VSCode插件 Remote - SSH 通过使用 SSH 链接虚拟…