Android 判断触摸点是否在某个view内部,解决子childView与parentView的touch事件冲突
2017-04-24 18:22
633 查看
事件冲突在触摸事件经常发生,这里记一个解决子view与parent的touch事件冲突的小方法:
原理,对触摸点进行位置判断,是否在目标View内部。
第一步:判断位置
第二步:在parentView中,进行事件拦截
原理,对触摸点进行位置判断,是否在目标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); } }
相关文章推荐
- Android 判断触摸点是否在某个view的区域,解决子view与parent的touch事件冲突
- android开发步步为营之65:解决ScrollView和ListView触摸事件onInterceptTouchEvent相互冲突问题
- android开发步步为营之65:解决ScrollView和ListView触摸事件onInterceptTouchEvent相互冲突问题
- 解决android view的touch和click事件冲突
- 解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题
- TouchSlop的初步认识(Android 判断触摸时是否滑动事件的常量)
- 解决android中HorizontalScrollView的滚动事件与组件的Touch冲突问题 --- 修正版
- Android判断touch事件点是否在view范围内的方法
- android 滑动事件冲突解决 Touch事件处理机制
- android 解决事件冲突 requestDisallowInterceptTouchEvent 分析
- android 解决ViewPager与Gallery事件冲突
- android 滑动事件冲突解决 Touch事件处理机制
- 判断touch事件点是否在view范围内
- Android之滑动事件冲突解决 Touch事件处理机制总结
- android 滑动事件冲突解决 Touch事件处理机制
- Android中Touch事件分析--解决HorizontalScrollView滑动和按钮事件触发问题
- android给 TextView 加上效果和事件响应 判断是否点击函数
- android按钮拖动Button 在up事件中做弹出菜单调用(通过判断坐标解决事件冲突问题)
- 【Android View】Android中View对触摸事件的处理和传递dispatchTouchEvent、onInterceptTouchEvent
- 重写ListView解决ListView内部ViewPaper滑动事件冲突问题