ScrollView监听滑动到顶部和底部的方法
2024-08-28 15:16:43
不需要监听滑动位置,只需要重写ScrollView的onOverScrolled和stopNestedScroll方法就可以了
public class ReadScrollView extends ScrollView{
private int mScrollY = 0;
private boolean mClampedY = false;
public ReadScrollView(Context context) {
super(context);
} public ReadScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
} public ReadScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} /**
* 监听变化---一般用不到
* @param scrollX
* @param scrollY
* @param clampedX
* @param clampedY
*/
// @Override
// protected void onScrollChanged(int l, int t, int oldl, int oldt) {
// super.onScrollChanged(l, t, oldl, oldt);
// if (scrollChangedListener != null){
// scrollChangedListener.onScrollChanged(l,t,oldl,oldt);
// }
//// DebugUtil.d("l==" + l +" t==" + t +" oldl==" + oldl + " oldt=="+oldt);
// } @Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
//scrollY=位置0和最底y坐标;clampedY=是否到顶部或者底部
mScrollY = scrollY;
mClampedY = clampedY;
// DebugUtil.d("======l==onOverScrolled"+" scrollY="+scrollY+" clampedY="+clampedY );
} /**
* 刷新到顶部和底部
*/
@Override
public void stopNestedScroll() {
super.stopNestedScroll();
if (mClampedY){
mClampedY = false;
if (mScrollY == 0){
scrollChangedListener.onScrollChangedTop();
}else {
scrollChangedListener.onScrollChangedBottom();
}
}
DebugUtil.d("======l==stopNestedScroll" );
} OnScrollChangedListener scrollChangedListener; public void setScrollChangedListener(OnScrollChangedListener scrollChangedListener) {
this.scrollChangedListener = scrollChangedListener;
} /**
*
*/
public interface OnScrollChangedListener{
//到达顶部
void onScrollChangedTop();
//到达底部
void onScrollChangedBottom();
//监听变化
// void onScrollChanged(int l,int t,int oldl,int oldt);
}
}
使用
scrollview.setScrollChangedListener(new ReadScrollView.OnScrollChangedListener() {
@Override
public void onScrollChangedTop() {
ShowUtils.toast("顶部");
} @Override
public void onScrollChangedBottom() {
ShowUtils.toast("底部");
}
});
最新文章
- 小结-stm32 驱动LED灯
- Java基础-重写System.out.println方法
- 关于C#中的new的用法
- OpenSSL命令---pkcs12
- leetcode 104 Maximum Depth of Binary Tree ----- java
- 归并排序 空间复杂度为O(1)的做法
- Meteor 之 数据的发布于订阅(Publish and subscribe )
- SqlServer中decimal(numeric )、float 和 real 数据类型的区别[转]
- unity3d 获取相机视口四个角的坐标
- Web工程软件升级之数据库升级(一)
- Storm-1.0.1+ZooKeeper-3.4.8+Netty-4.1.3 HA集群安装
- C# 部分关键字
- JavaScript原生Array常用方法
- 设计模式(1)单例模式(Singleton)
- Ubuntu16.04解决无法切换root权限的问题
- 好用的jquery.animateNumber.js数字动画插件
- 使用PageHepler分页
- React脚手架创建一个React应用以及项目目录结构详解
- JAVA修饰符、关键字和继承(一)
- linux下怎样用c语言调用shell命令
热门文章
- 写一个Spring Boot的Hello World
- 【STL基础】deque
- POJ:2976 Dropping tests(二分+最大化平均值)
- 批处理中setlocal enabledelayedexpansion的含义
- logback error 分开存日志
- 缓存算法及Redis、Memcached、Guava、Ehcache中的算法
- layer 弹出对话框 子父页面相互参数传递
- Java学习笔记day07_琐碎知识_水仙花数_ASCII码_冒泡排序_简单选择排序_折半查找
- my18_mysql中的几个超时时间
- element-ui表单验证(电话,邮箱)