您的位置:首页 > 移动开发 > Android开发

Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题

2017-06-03 13:40 549 查看
直接上代码  我这个scrollview因为业务需求做了滑动监听   解决惯性问题只需在onInterceptTouchEvent(MotionEvent e)方法里做处理就行  别的不需要考虑  简单  暴力

/**
* 带滚动监听的Scrollview
* 用于随着Scrollview的滑动更改状态栏的透明度
*/
public class MyScrollview extends ScrollView {
private int downX;
private int downY;
private int mTouchSlop;
private ScrollViewListener scrollViewListener = null;

public MyScrollview(Context context) {
super(context);
}

public MyScrollview(Context context, AttributeSet attrs) {
super(context, attrs);
}

public MyScrollview(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

public void setScrollViewListener(ScrollViewListener scrollViewListener) {
this.scrollViewListener = scrollViewListener;
}

@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
if (scrollViewListener != null) {
scrollViewListener.onScrollChanged(this, l, t, oldl, oldt);
}
}

public interface ScrollViewListener {
void onScrollChanged(MyScrollview scrollView, int l, int t, int oldl, int oldt);
}

/**
* 屏蔽内部recyclerview的滑动事件
* @param e
* @return
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
int action = e.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downX = (int) e.getRawX();
downY = (int) e.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int moveY = (int) e.getRawY();
if (Math.abs(moveY - downY) > mTouchSlop) {
return true;
}
}
return super.onInterceptTouchEvent(e);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐