随着时代的发展,伴随着以京东和淘宝为例的app开发模式,首页使用多数为android与H5的交互页面,所以不免需要做刷新的操作,而有时首页的h5中会出现横向滑动的轮播图之类的,这时就会和我们的下拉刷新事件发生冲突,为了解决这个问题,我们重写了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;
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);
if (xDiff > mTouchSlop + 60) {
return false;
}
}
return super.onInterceptTouchEvent(event);
}
}