dispatchTouchEvent方法用于事件的分发,Android中所有的事件都必须经过这个方法的分发,
然后决定是自身消费当前事件还是继续往下分发给子控件处理。返回true表示不继续分发,事件没有被消费。
返回false则继续往下分发,如果是ViewGroup则分发给onInterceptTouchEvent进行判断是否拦截该事件。

onTouchEvent方法用于事件的处理,返回true表示消费处理当前事件,返回false则不处理,交给子控件进行继续分发。

onInterceptTouchEvent是ViewGroup中才有的方法,View中没有,它的作用是负责事件的拦截,返回true的时候表示拦截当前事件,
不继续往下分发,交给自身的onTouchEvent进行处理。返回false则不拦截,继续往下传。这是ViewGroup特有的方法,
因为ViewGroup中可能还有子View,而在Android中View中是不能再包含子View的(iOS可以)。

package com.lwj.app.customview;import android.content.Context;
import android.graphics.PointF;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;public class ChildViewPager extends ViewPager{/** 触摸时按下的点 **/PointF downP = new PointF();/** 触摸时当前的点 **/PointF curP = new PointF();OnSingleTouchListener onSingleTouchListener;public ChildViewPager(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub
    }public ChildViewPager(Context context) {super(context);// TODO Auto-generated constructor stub
    }@Overridepublic boolean onTouchEvent(MotionEvent arg0) {// TODO Auto-generated method stub//每次进行onTouch事件都记录当前的按下的坐标if(getChildCount()<=1){return super.onTouchEvent(arg0);}curP.x = arg0.getX();curP.y = arg0.getY();if(arg0.getAction() == MotionEvent.ACTION_DOWN){//记录按下时候的坐标//切记不可用 downP = curP ,这样在改变curP的时候,downP也会改变downP.x = arg0.getX();downP.y = arg0.getY();//此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰getParent().requestDisallowInterceptTouchEvent(true);}if(arg0.getAction() == MotionEvent.ACTION_MOVE){//此句代码是为了通知他的父ViewPager现在进行的是本控件的操作,不要对我的操作进行干扰getParent().requestDisallowInterceptTouchEvent(true);}if(arg0.getAction() == MotionEvent.ACTION_UP || arg0.getAction() == MotionEvent.ACTION_CANCEL){//在up时判断是否按下和松手的坐标为一个点//如果是一个点,将执行点击事件,这是我自己写的点击事件,而不是onclickgetParent().requestDisallowInterceptTouchEvent(false);if(downP.x==curP.x && downP.y==curP.y){return true;}}super.onTouchEvent(arg0); //注意这句不能 return super.onTouchEvent(arg0); 否则触发parent滑动return true;}}

Android ViewPager嵌套ViewPager滑动冲突处理方法相关推荐

  1. android SwipeRefreshLayout嵌套Webview滑动冲突问题解决

    最近有一个需求,需要在网页中实现下拉刷新功能,这里遇到一个坑,加载网页的时候webview向上滑动不了了,看了一下网上的资料尝试过后都没有用,所以在这里做一下记录,希望可以帮到大家,由于两个控件都有滑 ...

  2. 关于ViewPager嵌套ViewPager左右滑动冲突解决方法

    情况如下,TabLayout+ViewPager+Fragment,其中一个Fragment里面又嵌套了一层TabLayout+ViewPager+Fragment,运行的时候出现了两个情况. 1.子 ...

  3. 解决ScrollView嵌套ViewPager出现的滑动冲突问题

    /** * 解决ScrollView嵌套ViewPager出现的滑动冲突问题 */ public class ScrollView1 extends ScrollView { private bool ...

  4. Android滑动冲突解决方法

    Android滑动冲突解决方法 滑动冲突 首先讲解一下什么是滑动冲突.当你需要在一个ScrollView中嵌套使用ListView或者RecyclerView的时候你会发现只有ScrollView能够 ...

  5. ViewPager嵌套ViewPager后子ViewPager滑动不正常问题

    ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. package com.lwj.app.customview;impo ...

  6. android中view手势滑动冲突的两种解决方法

    android中view手势滑动冲突的解决方法,主要解决方法有两种,外部和内部拦截.有需要的可以参考下. Android手势事件的冲突跟点击事件的分发过程息息相关,由三个重要的方法来共同完成,分别是: ...

  7. Android进阶必备:滑动冲突解决与事件分发机制(附视频讲解)这篇看完还不懂请寄刀片

    1.前言 Android学习一段时间,需求做多了必然会遇到滑动冲突问题,比如在一个ScrollView中要嵌套一个地图View,这时候触摸移动地图或者放大缩小地图就会变得不太准确甚至没有反应,这就是遇 ...

  8. viewpager嵌套viewpager

    viewpager嵌套viewpager 要求:外层不可以滑动,内层可以滑动 实现:重写外层的viewpager的2个方法即可 public class NoScrollViewPager exten ...

  9. android listview ontouchlistener,Android ListView监听滑动事件的方法(详解)

    ListView的主要有两种滑动事件监听方法,OnTouchListener和OnScrollListener 1.OnTouchListener OnTouchListener方法来自View中的监 ...

  10. android 滑动翻转动画,Android编程实现3D滑动旋转效果的方法

    本文实例讲述了Android编程实现3D滑动旋转效果的方法.分享给大家供大家参考,具体如下: 这里我们通过代码实现一些滑动翻页的动画效果. Animation实现动画有两个方式:帧动画(frame-b ...

最新文章

  1. Eclipse安装Svn无法连接问题
  2. 【Java Web前端开发】HTML表单和CSS部分
  3. Windows上创建文件夹链接
  4. 实现一个简单的代码字计数器(二)
  5. 2021-4-1 多校省选模拟赛
  6. Spring 全局异常捕获
  7. 【elasticsearch】Failed Elasticsearch bulk request: request retries exceeded max retry timeout
  8. js 获取浏览器高度和宽度值
  9. redhat solutions
  10. RHEL 6.5----haproxy实现负载均衡
  11. 物联网应用中的数字孪生——一种实现物联网数字孪生的全面的解决方案
  12. poi合并单元格,没有样式
  13. 北京信息科技大学计算机科学与技术研究生,2020年北京信息科技大学计算机科学与技术考研经验分享...
  14. python一键安装所有插件_解放你的双手,让你一键安装所有的KODI插件的懒人包来了...
  15. IDEA配置文件保存位置修改
  16. winvnc源码阅读笔记(四)---------vncDesktopThread线程
  17. 综合函数矩量法原理及实现思路
  18. mtk处理器和骁龙对比_3500元以内手机的绝杀?首款MTK 天玑1000处理器手机IQOO Z发布...
  19. DW大学生网页作业制作设计 中华饮食文化(HTML+CSS+JavaScript) Web前端大作业
  20. 找女朋友2109(快排)

热门文章

  1. JavScript中的循环
  2. Docker镜像的导入导出
  3. 免sudo使用docker
  4. 业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
  5. [Java] 实验4參考代码
  6. Javascript 将html转成pdf,下载,支持多页哦(html2canvas 和 jsPDF)
  7. 并发用户数和TPS的关系
  8. 阿里巴巴 Java 开发手册之编程规约(一)-------我的经验
  9. 使用sublime text 执行 tcl 出错
  10. filter[过滤器]使用大全