在使用SwipeRefreshLayout时我们注意到在SwipeRefreshLayout中左右滑动时可能也会触发下拉刷新的事件,这点让我们很不爽。追其原因是SwipeRefreshLayout对于y轴触摸举例十分明感,没有做太多的容差处理(似乎容差值仅有16),所以如果你不是完全水平的滑动的话就很可能会触发下拉刷新的事件。为了解决这个问题,我们重写了SwipeRefreshLayout的触摸事件,当触摸的X距离大于某个数值的时候,我们就让它认为我们是在左右滑动,不执行下拉刷新操作。

VerticalSwipeRefreshLayout

package kale.com.waterfall.extra.swiprefreshlayout;import android.content.Context;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewConfiguration;/*** @author Jack Tony* @brief 只在竖直方向才能下拉刷新的控件* @date 2015/4/5*/
public class VerticalSwipeRefreshLayout extends SwipeRefreshLayout {private int mTouchSlop;// 上一次触摸时的X坐标private float mPrevX;public VerticalSwipeRefreshLayout(Context context, AttributeSet attrs) {super(context, attrs);// 触发移动事件的最短距离,如果小于这个距离就不触发移动控件mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();}@Overridepublic boolean onInterceptTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:mPrevX = event.getX();break;case MotionEvent.ACTION_MOVE:final float eventX = event.getX();float xDiff = Math.abs(eventX - mPrevX);// Log.d("refresh" ,"move----" + eventX + "   " + mPrevX + "   " + mTouchSlop);// 增加60的容差,让下拉刷新在竖直滑动时就可以触发if (xDiff > mTouchSlop + 60) {return false;}}return super.onInterceptTouchEvent(event);}
}

解决SwipeRefreshLayout左右滑动事件冲突的问题相关推荐

  1. scrollview嵌套listview 滑动事件冲突的解决方法

    scrollview嵌套listview 滑动事件冲突的解决方法 参考文章: (1)scrollview嵌套listview 滑动事件冲突的解决方法 (2)https://www.cnblogs.co ...

  2. android 解决ListView点击与滑动事件冲突

    如果你的ListView的Item有滑动功能,但又点击Item跳转到其它activity,这样若是在Adapter里面写点击事件是会导致滑动事件获取不到焦点而失效: 解决方法:不要在adapter里面 ...

  3. Android动画及滑动事件冲突解决(转载)

    原文链接:http://blog.csdn.net/singwhatiwanna/article/details/38168103 Android开发中动画和事件处理是程序员迈向高手的必经之路,也是重 ...

  4. Android之滑动事件冲突解决 Touch事件处理机制总结

    android中的事件类型分为按键事件和屏幕触摸事件,Touch事件是屏幕触摸事件的基础事件,有必要对它进行深入的了解.  一个最简单的屏幕触摸动作触发了一系列Touch事件:ACTION_DOWN- ...

  5. ViewPager2滑动事件冲突

    1. 场景分析 RecyclerView或SwipeRefreshLayout中嵌套ViewPager2,ViewPager2左右滑动困难,事件容易给RecyclerView或SwipeRefresh ...

  6. iOS 全屏侧滑手势/UIScrollView/UISlider间滑动手势冲突

    七夕节福利 效果预览 一.前期准备 有一个支持全屏侧滑返回的视图控制器ViewController,ViewController.view上有一个UIScrollView,UIScrollView上有 ...

  7. 仿百度壁纸客户端(三)——首页单向,双向事件冲突处理,壁纸列表的实现

    仿百度壁纸客户端(三)--首页单向,双向事件冲突处理,壁纸列表的实现 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...

  8. 仿百度壁纸客户端(三)——首页单向,双向事件冲突处理,壁纸列表的实现...

    仿百度壁纸客户端(三)--首页单向,双向事件冲突处理,壁纸列表的实现 百度壁纸系列 仿百度壁纸客户端(一)--主框架搭建,自定义Tab + ViewPager + Fragment 仿百度壁纸客户端( ...

  9. 解决SwipeRefreshLayout与Banner滑动冲突

    import android.content.Context; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import ...

最新文章

  1. plsql轻量版基本语法
  2. centos7ubuntu搭建Vulhub靶场(推荐Ubuntu)
  3. Java共现矩阵的构建(用于社交网络结构分析)
  4. linux有名管道大小,Linux中的pipe与named pipe(FIFO),即管道和命名管道
  5. php cookie防伪造,技术分享:Cookie 防伪造 防修改
  6. 2017北京国庆刷题Day2 afternoon
  7. Java后端开发笔试题
  8. 微信公众号服务器架构,Flask框架实现微信公众号开发(接入微信服务器)
  9. 在oracle中插入语句要求,oracle插入语句
  10. Java jna 中控考勤机_中控考勤机开发 jacob 实现监听
  11. 2024考研《艺术学概论》彭吉象|复习笔记(上篇)(1-6章)
  12. 变量之间的相关性度量
  13. 讯飞、有道、谷歌、微软语音sdk集成总结
  14. 未来教育1级计算机基础及ms,未来教育.全国计算机等级考试一本通一级计算机基础及MS Office应用...
  15. 51.【Java String方法的小结】
  16. CSS3变形透视动画总结
  17. SignalR服务器端消息推送
  18. JavaScript:队列的封装及面试题击鼓传花队列方法实现案例
  19. 深度学习吴恩达老师(一):神经网络和深度学习(Neural Networks and Deep Learning):内容整理 + 习题分享
  20. Ubnt路由器使用WinSCP登录后直接就是root权限可操作任何文件

热门文章

  1. Java基础—8大数据类型
  2. 监控工具—Prometheus—基础介绍
  3. RobotFramework系列(二):Robot 如何编写自定义关键字
  4. flutter web:lottie jssdk报错处理
  5. stm32f405xx.h头文件的问题Undefined symbol IS_TIM_BREAK_INSTANCE
  6. java:提示Could not initialize class sun.awt.X11GraphicsEnvironment
  7. Drawable 添加过滤色,改变图片颜色
  8. Appirater -- app中提示用户为app评价的提示框
  9. 开发人员必读的11本最具影响力书籍
  10. UVA532 - Dungeon Master(裸BFS)