(1).场景一:外部滑动方向跟内部滑动方向不一致,比如外部左右滑动,内部上下滑动
  ViewPager+Fragment配合使用,会有滑动冲突,但是ViewPager内部处理了这种滑动冲突
  如果采用的不是ViewPager而是ScrollView就必须手动处理滑动事件  
 
  上下滑动时,需要上一级view把消息传递进行,因此上一级view的onInterceptTouchEvent方法
return false;左右滑动时需要上一级view执行它的onTouchEvent方法,因此它的onInterceptTouchEvent
方法应该return true; 代码如下:
  public boolean onInterceptTouchEvent(MotionEvent ev) {
  // TODO Auto-generated method stub
    boolean result=false;
    switch(ev.getAction()){
      case MotionEvent.ACTION_DOWN:
        //getX()表示以该控件的左上角为0点
        //getRawX()表示以屏幕的左上角为0点
      firstX=(int) ev.getX();
    firstY=(int) ev.getY();
    break;
      case MotionEvent.ACTION_MOVE:
    //手指在屏幕上水平移动的绝对值
    int disX=(int) Math.abs(ev.getX()-firstX);
    //手指在屏幕上竖直移动的绝对值
    int disY=(int) Math.abs(ev.getY()-firstY);
    if(disX>disY&&disX>10){
    result=true;
        }
    break;
        case MotionEvent.ACTION_UP:
    break;
      }
    return result;
  }
(2).场景二:外部滑动方向跟内部滑动方向一致,内外两层同时上下或者左右滑动
  根据业务需求来判断
 
(3).场景三:上面两种场景的嵌套 (4).滑动冲突的解决方式:
    a.外部解决法:父容器对事件判断是否拦截
    b.内部解决法:父容器不拦截任何事件,任何的事件都传递给子元素,如果子元素需要此事件就消耗掉,否则就由父容器进行处理。
  对于底层的View来说,有一种方法可以阻止父层的View截获touch事件,就是调用getParent().requestDisallowInterceptTouchEvent(true);
  方法。一旦底层View收到touch的action后调用这个方法那么父层View就不会再调用onInterceptTouchEvent了,也无法截获以后的action。
 
  public boolean dispatchTouchEvent(MotionEvent event){
    switch(event.getAction()){
    case MotionEvent.ACTION_DOWN:
        //父控件就不会拦截ListView的滑动事件
        parent.requestDisallowInterceptTouchEvent(true);
        break;
    case MOtionEvent.ACTION_MOVE:
        if(父容器需要此类点击事件){
          parent.requestDisallowInterceptTouchEvent(false);
        }
        break;
    }
    return super.dispatchTouchEvent(event);
  }

Android滑动冲突解决的更多相关文章

  1. Android滑动冲突解决方法

    叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了. 关于滑动冲突 滑动冲突分类 ...

  2. 关于Android滑动冲突的解决方法(二)

    之前的一遍学习笔记主要就Android滑动冲突中,在不同方向的滑动所造成冲突进行了了解,这样的冲突非常easy理解,当然也非常easy解决.今天,就同方向的滑动所造成的冲突进行一下了解,这里就先以垂直 ...

  3. (转载)Android滑动冲突的完美解决

    Android滑动冲突的完美解决 作者:softwindy_brother 字体:[增加 减小] 类型:转载 时间:2017-01-24我要评论 这篇文章主要为大家详细介绍了Android滑动冲突的完 ...

  4. (转)ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决 本篇主要讲解一下几个问题 粗略地介绍一下View的事件分发机制 解决事件滑动冲突的思路及方法 ScrollView 里面嵌 ...

  5. Android 滑动冲突处理

    要想解决滑动冲突就必须好好理解 Android 的事件分发机制.不了解 Android 事件分发机制的请先参考资料学习一下. 一般有 2 种方法 1 外部拦截法 这个非常简单,因为事件是从父 view ...

  6. 每日一问:Android 滑动冲突,你们都是怎样处理的

    坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 在 Android 开发中,滑动冲突总是我们一个无法避免的话题.而对于解 ...

  7. 备忘-Android ViewPager 与Gallery滑动冲突解决方法

    解决方法,重新定义gallery,禁止触发pager的触摸事件 1 public class UserGallery extends Gallery implements OnGestureListe ...

  8. Android ScrollView和ListView滑动冲突解决记录

    private int mLastX; private int mLastY; public View.OnTouchListener onTouchListener = new View.OnTou ...

  9. android 滑动冲突

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 通过move事件的 拦截. 在滑动组件中,重写 在拦截触摸事件的时候  这个方法, 然后 ...

随机推荐

  1. react-create-app 构建react项目的流程以及需要注意的地方

    Hello 小伙伴们,如果觉得本文还不错,记得给个 star , 小伙伴们的 star 是我持续更新的动力!GitHub 地址 React 系列文章代码地址 一 目录 不折腾的前端,和咸鱼有什么区别 ...

  2. springBoot(4)---热部署,配置文件使用

    热部署,配置文件使用 一.热加载 spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Sprin ...

  3. 全网最详细的Windows里Anaconda-Navigator启动后闪退的解决方案(图文详解)

    不多说,直接上干货!  问题详情 点击 出现Anaconda-Navigator启动后闪退的现象. 或者 装过一次anaconda,貌似按了一个更新的键就打不开了.navigator这个打不开,会停留 ...

  4. find命令高级参数

    find 命令参数大全  转自[https://www.cnblogs.com/yorkyang/p/6294894.html] Linux中find常见用法示例 ·find   path   -op ...

  5. SpringBoot系列——Thymeleaf模板

    前言 thymeleaf是springboot官方推荐使用的java模板引擎,在springboot的参考指南里的第28.1.10 Template Engines中介绍并推荐使用thymeleaf, ...

  6. Python爬虫之诗歌接龙

    介绍   本文将展示如何利用Python爬虫来实现诗歌接龙.   该项目的思路如下: 利用爬虫爬取诗歌,制作诗歌语料库: 将诗歌分句,形成字典:键(key)为该句首字的拼音,值(value)为该拼音对 ...

  7. C#之WebApi权限认证_学习笔记1

    自己并不懂,在此先记录下来,留待以后学习... 正文 前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请 ...

  8. 腾讯防水墙(滑动验证码)的简单使用 https://007.qq.com

    在线体验:https://007.qq.com/online.html 快速开始:https://007.qq.com/quick-start.html 简单使用: 1. 引入 JS <scri ...

  9. [android] 采用layoutInflater打气筒创建一个view对象

    上一节知道了ListView的工作原理,数据也展示出来了,但是TextView显示的非常难看,如果想美化一下,就先创建好一个布局出来,这个布局采用了两层LinearLayout嵌套,外层的水平方向,内 ...

  10. Spring Data REST API集成Springfox、Swagger

    原文: Documenting a Spring Data REST API with Springfox and Swagger 使用Spring Date REST,你可以迅速为Spring Da ...