Android 自定义ScrollView嵌套滚动兼容,监听滑动状态:顶部、底部、停止、滑动中
来源:互联网 发布:淘宝物流评价怎么修改 编辑:程序博客网 时间:2024/05/29 04:47
/** * 1、监听ScrollView滚动 * 2、嵌套滚动兼容 * * @author chrisZou * @from http://blog.csdn.net/fy993912_chris/article/details/72765260 * @email chrisSpringSmell@gmail.com */public class CustomCompatScrollView extends ScrollView { private GestureDetector mGestureDetector; private ScrollListener scrollListener; private boolean isScrolling = false; public CustomCompatScrollView(Context context) { this(context, null); } public CustomCompatScrollView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CustomCompatScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mGestureDetector = new GestureDetector(context, new YScrollDetector()); setFadingEdgeLength(0); } @Override protected void onScrollChanged(int x, int y, int oldX, int oldY) { super.onScrollChanged(x, y, oldX, oldY); if (scrollListener != null) { isScrolling = true; scrollListener.onScrollChanged(this, x, y, oldX, oldY); if (getChildAt(0) != null && getChildAt(0).getMeasuredHeight() <= getScrollY() + getHeight()) { scrollListener.onScrollBottom(this); } else if (getScrollY() == 0) { scrollListener.onScrollTop(this); } } } @Override public boolean onTouchEvent(MotionEvent ev) { if (MotionEvent.ACTION_UP == ev.getAction()) { if (isScrolling) { scrollListener.onScrollStop(this); } isScrolling = false; } return super.onTouchEvent(ev); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev); } public void setScrollListener(ScrollListener scrollListener) { this.scrollListener = scrollListener; } class YScrollDetector extends GestureDetector.SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return Math.abs(distanceY) > Math.abs(distanceX); } } public interface ScrollListener { void onScrollChanged(ScrollView scrollView, int x, int y, int oldx, int oldy); void onScrollBottom(ScrollView scrollView); void onScrollTop(ScrollView scrollView); void onScrollStop(ScrollView scrollView); }}
阅读全文
0 0
- Android 自定义ScrollView嵌套滚动兼容,监听滑动状态:顶部、底部、停止、滑动中
- Android - ScrollView 监听滑动停止,顶部还是底部?
- Android中监听ScrollView滑动停止和滑动到底部
- Android中监听ScrollView滑动停止和滑动到底部
- android ScrollView嵌套ListView自动滑动到底部,嵌套ViewPager出现的滑动冲突以及监听滑动停止
- Android监听ScrollView或NestedScrollView滑动到顶部和底部
- ScrollView监听滑动到底部、顶部
- android监听ScrollView滑动停止
- Android 监听 ScrollView 滑动到最底部
- ScrollView监听停止滑动,判断是否滑到底部
- Android ScrollView监听滑动到顶部和底部的两种方式
- Android自定义ScrollView:实现滑动顶部停靠
- Android中自定义ScrollView的滑动监听事件
- android ScrollView 固定顶部、底部 滑动中间部分
- Android 自定义ScrollView可监控滑动方向、滑动到底部
- 自定义scrollview滑动到底部的监听事件
- 自定义一个监听滑动到底部的scrollview
- Android ScrollView对滑动的监听当手离开屏幕时的处理(向上向下滑动,滑动到顶部与底部)
- Gear VR推出移动冒险InMind 2
- NOIP复习范围--思维导图
- 为Python安装机器学习编程库
- 友盟:微信,QQ,新浪微博第三方登录
- THUWC2017 bipartite
- Android 自定义ScrollView嵌套滚动兼容,监听滑动状态:顶部、底部、停止、滑动中
- smoj1710:砖块II (dp套dp)
- 为php设置系统变量、环境变量
- Android 长LOG打印不全解决办法一
- DataFrame.mean()函数
- std::hash实现太简单分布不匀
- H5响应式设计可以为你网站带来什么?
- mac的java环境配置
- POJ 3126 Prime Path