Android 判断触摸点是否在某个view内部,解决子childView与parentView的touch事件冲突
发布日期:2021-07-30 03:26:12
浏览次数:9
分类:技术文章
本文共 1116 字,大约阅读时间需要 3 分钟。
事件冲突在触摸事件经常发生,这里记一个解决子view与parent的touch事件冲突的小方法:
原理,对触摸点进行位置判断,是否在目标View内部。 第一步:判断位置private boolean isTouchPointInView(View targetView, int xAxis, int yAxis) { if (targetView== null) { return false; } int[] location = new int[2]; targetView.getLocationOnScreen(location); int left = location[0]; int top = location[1]; int right = left + targetView.getMeasuredWidth(); int bottom = top + targetView.getMeasuredHeight(); if (yAxis >= top && yAxis <= bottom && xAxis >= left && xAxis <= right) { return true; } return false; }
第二步:在parentView中,进行事件拦截
@Override public boolean dispatchTouchEvent(MotionEvent ev) { int x = (int) ev.getRawX(); int y = (int) ev.getRawY(); if (isTouchPointInView(targetView, x, y)) { // insided,do somethings you like return super.dispatchTouchEvent(ev); }else{ // outsided,do somethings you like return super.dispatchTouchEvent(ev); } }
转载地址:https://blog.csdn.net/u010886975/article/details/70638408 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月13日 08时31分58秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
当下热点词再学:redis缓存预热、更新、降级,限流
2019-04-27
【redis6.0.6】redis源码慢慢学,慢慢看 -- 第五天:adlist
2019-04-27
别抖,OK? 操作系统抖动现象、网络抖动与延迟、函数抖动之防抖与节流,串讲
2019-04-27
通过域名获取主机IP -- struct addrinfo
2019-04-27
【C++】算法集锦(8):从两数和问题拓展到一百数和问题
2019-04-27
【C++】算法集锦(9):背包问题
2019-04-27
【C++】算法集锦(10)通俗讲kmp算法
2019-04-27
【C++】算法集锦(12):高楼扔鸡蛋
2019-04-27
【图解】拥塞控制
2019-04-27
线程上下文切换
2019-04-27
什么是服务熔断?
2019-04-27
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能
2019-04-27
C++面经总结之《Effective C++》(一)
2019-04-27
C++面经总结之《Effective C++》(二)
2019-04-27
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!!
2019-04-27
打开我的收藏夹 -- Python数据分析杂谈
2019-04-27
上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构
2019-04-27
上手Pandas,带你玩转数据(2)-- 使用pandas从多种文件中读取数据
2019-04-27
上手Pandas,带你玩转数据(3)-- pandas数据存入文件
2019-04-27