ScrollView监听滑动到顶部和底部的方法
不需要监听滑动位置,只需要重写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("底部");
}
});
ScrollView监听滑动到顶部和底部的方法的更多相关文章
- Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)
Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景: 1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动 ...
- Android: ScrollView监听滑动到顶端和底端
在项目中需要监听ScrollView滑动到顶端和底端的时候以实现自己的ScrollView,那么怎样去监听呢?今天查看了一下ScrollView的源码,找到了一种方法.先看一下源码中的overScro ...
- android去掉滑动到顶部和底部的阴影
android去掉滑动到顶部和底部的阴影 <ListView android:id="@+id/listView" android:layout_width="ma ...
- js与jquery实时监听输入框值的oninput与onpropertychange方法
文实例讲述了js与jquery实时监听输入框值的oninput与onpropertychange方法.分享给大家供大家参考.具体如下: 最近做过一个项目,需求是下拉框里自动匹配关键字,具体细节是实时监 ...
- 关于scrollview监听的一些方法
一 package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import andro ...
- 移动端控制视频点击播放点击下一个视频时自动停止播放&监听滑动溢出屏幕高度时停止播放
直接上代码js部分: <script type="text/javascript"> var go;//记录video播放器位置 var video=document. ...
- Qt实现小功能之列表无限加载(创意很不错:监听滚动条事件,到底部的时候再new QListWidgetItem)
概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...
- Android 用Activity的onTouchEvent来监听滑动手势
package com.example.activityOnTouchEvent; import android.app.Activity; import android.os.Bundle; imp ...
- 实时监听input输入内容的N种方法
现在有一个需求,需要我们实时监听input输入框中的内容,从而带来更好的用户体验,而不是等我们全部输入完毕才告诉我们格式不对首先我们创建一个input输入框 <form name='loginF ...
随机推荐
- [JavaScript]如何实现一个JS脚本能在browser和NodeJs里都是用
下面是一个Common的Solution 'use strict'; // Universal Module Definition (UMD) to support AMD, CommonJS/Nod ...
- sharepoint_study_8
描述:如何删除webPart无效文件? 图示: 有时候webpart的部署包虽然删除了,但是它的文件依然会留在这个类别中,怎样删除这些无效的文件呢? 解决: 在网站设置中打开web部件,里面列出了网站 ...
- 设置IIS,使客户端访问服务器上的文件
1.打开IIS控制器——"运行-cmd-inetmgr-回车“ 2.选中要设置的网站 3.右键,添加虚拟目录 4.如上图所示,在别名处输入文件目录的名称,物理路径要选择文件在磁盘上的存储根目 ...
- 南昌大学航天杯第二届程序设计竞赛校赛网络同步赛 I
链接:https://www.nowcoder.com/acm/contest/122/I来源:牛客网 题目描述 小q最近在做一个项目,其中涉及到了一个计时器的使用,但是笨笨的小q却犯难了,他想请你帮 ...
- Docker 使用samba 共享文件
Docker 使用samba 共享文件 docker run -it --name samba \ -p 139:139 -p 445:445 \ -v /home/develop/code/de ...
- day_05 字典
1. 字典 1.成对保存数据 ,以key:value形式保存 2.以{}表示,每项内容都是key:value,元素之间用逗号隔开 3.key是不可重复的 4.字典以hash算法来计算key的hash值 ...
- 关于Django的视图层
视图函数 通俗来讲:视图函数是在url配置是所匹配好了将要调用的对应函数(逻辑代码) 是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容 ...
- daterangepicker-双日历
js脚本和css样式,到bootstrap官网去下载 <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml&qu ...
- 新磁盘创建lvm并挂载
### .查看硬盘 fdisk -l ### 删除分区 fdisk /dev/sdc ### 按d删除,按w保存并退出 ### 创建pv pvcreate /dev/sdc ### 创建 vg vgc ...
- python解决excel工作薄合并处理
年度了,要对每个月的数据进行总的汇总,去计算每消耗品的使用情况,表格都在一个工作表的不同sheet中,并且格式相同,所以就用python写了这个小脚本,现在把脚本粘贴出来,以后有需要就可以在此基础上改 ...