Android应用的中滑动事件出现冲突如何解决-创新互联

Android应用的中滑动事件出现冲突如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

成都创新互联公司提供网站制作、做网站、网页设计,高端网站设计1元广告等致力于企业网站建设与公司网站制作,十年的网站开发和建站经验,助力企业信息化建设,成功案例突破上千余家,是您实现网站建设的好选择.

外部拦截法

外部拦截法是指在有点击事件时都要经过父容器,那么在父容器时如果需要拦截就拦截自己处理,不需要则传递给下一层进行处理,下面看个例子:

首先定义一个水平滑动的HorizontalScrollViewEx,看主要代码

主要的拦截是需要重写onInterceptTouchEvent

@Override 
 public boolean onInterceptTouchEvent(MotionEvent ev) { 
 boolean intercepted = false; 
 int x = (int) ev.getX(); 
 int y = (int) ev.getY(); 
 switch (ev.getAction()) { 
 case MotionEvent.ACTION_DOWN: 
 //down事件不拦截,否则无法传给子元素 
 intercepted = false; 
 if (!mScroller.isFinished()) { 
  mScroller.abortAnimation(); 
  intercepted = true; 
 } 
 break; 
 case MotionEvent.ACTION_MOVE: 
 int deltaX = x - mLastXIntercept; 
 int deltaY = y - mLastYIntercept; 
 //水平滑动则拦截 
 if (Math.abs(deltaX) > Math.abs(deltaY) + 5) { 
  intercepted = true; 
 } else { 
  intercepted = false; 
 } 
 break; 
 case MotionEvent.ACTION_UP: 
 //不拦截,否则子元素无法收到 
 intercepted = false; 
 break; 
 } 
 //因为当ViewGroup中的子View可能消耗了down事件,在onTouchEvent无法获取, 
 // 无法对mLastX赋初值,所以在这里赋值一次 
 mLastX = x; 
 mLastY = y; 
 mLastYIntercept = y; 
 mLastXIntercept = x; 
 return intercepted; 
 } 

网站题目:Android应用的中滑动事件出现冲突如何解决-创新互联
文章出自:http://bzwzjz.com/article/idogd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 做网站设计 网站建设改版 网站制作公司 重庆网站制作 成都网站制作 重庆网站建设 网站制作 手机网站制作 重庆网站制作 梓潼网站设计 营销型网站建设 成都网站建设 成都品牌网站建设 手机网站制作 响应式网站设计 自适应网站建设 网站制作报价 重庆企业网站建设 营销型网站建设 成都做网站建设公司 成都网站建设 成都网站设计