监听滑动事件和消除与内嵌recyclerview冲突的Scrollview(惯性消失问题解决)
2017-09-22 11:23
513 查看
监听滑动事件和消除与内嵌recyclerview冲突的Scrollview(惯性消失问题解决)
其实最主要的是onInterceptTouchEvent()方法,只需要自定义控件,重写这个方法即可:
主要代码如下:
public class ObservableScrollView extends ScrollView { private int downX; private int downY; private int mTouchSlop; private ScrollViewListener scrollViewListener = null; public ObservableScrollView(Context context) { super(context); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();// } public ObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();// } public ObservableScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();// } public void setScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } public interface ScrollViewListener { void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: downX = (int) ev.getRawX(); downY = (int) ev.getRawY(); break; case MotionEvent.ACTION_MOVE: int moveY = (int) ev.getRawY(); if (Math.abs(moveY - downY) > mTouchSlop) { return true; } } return super.onInterceptTouchEvent(ev); } }
其实最主要的是onInterceptTouchEvent()方法,只需要自定义控件,重写这个方法即可:
主要代码如下:
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { int action = ev.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: downX = (int) ev.getRawX(); downY = (int) ev.getRawY(); break; case MotionEvent.ACTION_MOVE: int moveY = (int) ev.getRawY(); if (Math.abs(moveY - downY) > mTouchSlop) { return true; } } return super.onInterceptTouchEvent(ev); }
相关文章推荐
- 监听滑动事件和消除与内嵌recyclerview冲突的Scrollview
- scrollview 嵌套 recyclerview 滑动惯性消失问题解决,recclerview 滑到底部事件
- 解决ScrollView嵌套RecyclerView时,惯性滑动失效的问题
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- 【Android 手势冲突】彻底解决RecyclerView与ScrollView滑动冲突问题,并实现RecyclerView悬停导航栏(附demo)
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- 解决ScrollView嵌套viewPager中嵌套listView滑动事件冲突问题(水平方向)
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- Android - NestedScrollView 内嵌 RecyclerView 滑动监听问题
- NestedScrollView 内嵌 RecyclerView 滑动监听问题
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- android scrollView 内嵌ViewPager或Gallery等水平滑动控件冲突问题解决实现同时滑动
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- 解决ScrollView嵌套viewpager滑动事件冲突问题
- 解决ViewFlow在Scrollview下滑动不灵敏的BUG(解决viewflow与父控件的滑动事件冲突问题)
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题