解决SwipeRefreshLayout左右滑动事件冲突的问题
2015-05-04 19:08
441 查看
解决SwipeRefreshLayout左右滑动事件冲突的问题
转载自http://www.cnblogs.com/tianzhijiexian/p/4397537.html
在使用SwipeRefreshLayout时我们注意到在SwipeRefreshLayout中左右滑动时可能也会触发下拉刷新的事件,这点让我们很不爽。追其原因是SwipeRefreshLayout对于y轴触摸举例十分明感,没有做太多的容差处理(似乎容差值仅有16),所以如果你不是完全水平的滑动的话就很可能会触发下拉刷新的事件。为了解决这个问题,我们重写了SwipeRefreshLayout的触摸事件,当触摸的X距离大于某个数值的时候,我们就让它认为我们是在左右滑动,不执行下拉刷新操作。
VerticalSwipeRefreshLayout
转载自http://www.cnblogs.com/tianzhijiexian/p/4397537.html
在使用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(); } @Override public 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左右滑动事件冲突的问题
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
- 解决SwipeRefreshLayout左右滑动事件冲突的问题
- 解决使用`SwipeRefreshLayout`下拉刷新和左右滑动事件冲突的问题
- 解决ScrollView和VerticalViewPager滑动事件冲突问题
- React Native通过修改ScrollableTabView和ViewPager来解决左右滑动冲突的问题
- 仿Launch的 分页滑动,解决上下左右冲突问题
- 解决自定义可左右滑动cell时和tableview的滑动手势冲突问题
- Unity上路(一):Srollview的Cell点击与滑动事件冲突的问题解决
- 解决ScrollView嵌套viewPager中嵌套listView滑动事件冲突问题(水平方向)
- 解决ListView+ViewPager滑动事件冲突的问题
- 解决ListView+ViewPager滑动事件冲突的问题
- ViewPager禁止滑动,设置页片间距,设置当前显示的页面,缓存个数,以及解决嵌套ViewPager左右滑动冲突问题
- 解决ViewPager和SlidingPaneLayout的滑动事件冲突问题
- 解决viewpager与其他可以左右滑动的事件冲突
- 移动端的左右滑动DEMO,解决了左右滑动而不能上下滑动的事件冲突
- ScrollView嵌套可以水平滚动的自定义控件时滑动事件冲突问题解决办法
- 重写ListView解决ListView内部ViewPaper滑动事件冲突问题
- 解决自定义ListView中滑动事件和点击的setOnItemClickListener事件冲突的问题
- 解决ViewFlow在Scrollview下滑动不灵敏的BUG(解决viewflow与父控件的滑动事件冲突问题)