解决使用`SwipeRefreshLayout`下拉刷新和左右滑动事件冲突的问题
来源:互联网 发布:大闹宠物进阶数据 编辑:程序博客网 时间:2024/04/20 15:48
解决使用SwipeRefreshLayout
下拉刷新和左右滑动事件冲突的问题
项目中某个功能从原生修改到加载h5,在h5中有左右滑动的广告图(下图中的A区域),该页还需要保留下拉刷新,使用的是SwipeRefreshLayout
, 开发完成后发现手动滑动广告图时会出现卡顿,停滞现象,究其原因,是左右滑动和下拉刷新(垂直)冲突导致,就是SwipeRefreshLayout
对于Y轴的处理容差值很小,如果不是水平滑动,很轻易就会触发下拉刷新。
为了解决该问题,需要重写SwipeRefreshLayout
的onInterceptTouchEvent(MotionEvent ev)
事件,在这里面进行处理,当X距离滑动大于某个值时,就认为是左右滑动,不执行下拉刷新操作。
import 包名import android.content.Context;import android.support.v4.widget.SwipeRefreshLayout;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.ViewConfiguration;/** * Created by on 2016/6/13. */public class VerticalSwipeRefreshLayout extends SwipeRefreshLayout { private int scaleTouchSlop; private float preX; public VerticalSwipeRefreshLayout(Context context, AttributeSet attrs) { super(context, attrs); scaleTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: preX = ev.getX(); break; case MotionEvent.ACTION_MOVE: float moveX = ev.getX(); float instanceX = Math.abs(moveX - preX); Log.i("refresh...","move: instanceX:" + instanceX + "=(moveX:" + moveX + " - preX:" + preX + ") , scaleTouchSlop:" + scaleTouchSlop); // 容差值大概是24,再加上60 if(instanceX > scaleTouchSlop + 60){ return false; } break; } return super.onInterceptTouchEvent(ev); }}
在layout中使用
解决,完毕。
【扫描二维码查看】
2 0
- 解决使用`SwipeRefreshLayout`下拉刷新和左右滑动事件冲突的问题
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
- SwipeRefreshLayout上下刷新与左右滑动事件冲突的处理
- Android 下拉刷新 左右滑动 事件冲突
- ViewPager左右滑动与SwipeRefreshLayout下拉刷新冲突
- 解决SwipeRefreshLayout和webview下拉刷新冲突问题
- 解决SwipeRefreshLayout和webview下拉刷新冲突问题
- SwipeRefreshLayout下拉刷新跟listview下拉滑动冲突解决
- viewpager和SwipeRefreshLayout下拉刷新冲突解决
- SwipeRefreshLayout下拉刷新冲突解决
- SwipeRefreshLayout下拉刷新冲突解决
- 下拉刷新和viewPager左右滑动冲突,下拉刷新和banner滑动布局滑动冲突
- Android WebView下拉刷新与SwipeRefreshLayout事件冲突解决
- Android SwipeRefreshLayout 嵌套 CoordinatorLayout 下拉刷新 事件冲突解决
- //解决SwipeRefreshLayout和RecyclerView存在滑动冲突的问题
- 解决SwipeRefreshLayout下拉刷新与ListView下拉的冲突
- 【学习笔记】Java数组
- 工厂模式
- STL中的Allocator
- 剑指offer---面试题7 用两个栈实现队列
- Hbase: IllegalArgumentException: No columns to insert
- 解决使用`SwipeRefreshLayout`下拉刷新和左右滑动事件冲突的问题
- TextBox是一个容器类型的对象
- hive面试题目:表大概有2T左右,对表数据转换
- 仿qq列表侧滑删除
- Swagger--连接前后端的通道
- linux内存管理
- 变量只能在定义时被初始化
- 2016年值得关注的大数据存储管理技术
- 超简单安卓多渠道打包-gradle篇