不需要监听滑动位置,只需要重写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监听滑动到顶部和底部的方法的更多相关文章

  1. Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)

    Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景: 1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动 ...

  2. Android: ScrollView监听滑动到顶端和底端

    在项目中需要监听ScrollView滑动到顶端和底端的时候以实现自己的ScrollView,那么怎样去监听呢?今天查看了一下ScrollView的源码,找到了一种方法.先看一下源码中的overScro ...

  3. android去掉滑动到顶部和底部的阴影

    android去掉滑动到顶部和底部的阴影 <ListView android:id="@+id/listView" android:layout_width="ma ...

  4. js与jquery实时监听输入框值的oninput与onpropertychange方法

    文实例讲述了js与jquery实时监听输入框值的oninput与onpropertychange方法.分享给大家供大家参考.具体如下: 最近做过一个项目,需求是下拉框里自动匹配关键字,具体细节是实时监 ...

  5. 关于scrollview监听的一些方法

    一 package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import andro ...

  6. 移动端控制视频点击播放点击下一个视频时自动停止播放&监听滑动溢出屏幕高度时停止播放

    直接上代码js部分: <script type="text/javascript"> var go;//记录video播放器位置 var video=document. ...

  7. Qt实现小功能之列表无限加载(创意很不错:监听滚动条事件,到底部的时候再new QListWidgetItem)

    概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...

  8. Android 用Activity的onTouchEvent来监听滑动手势

    package com.example.activityOnTouchEvent; import android.app.Activity; import android.os.Bundle; imp ...

  9. 实时监听input输入内容的N种方法

    现在有一个需求,需要我们实时监听input输入框中的内容,从而带来更好的用户体验,而不是等我们全部输入完毕才告诉我们格式不对首先我们创建一个input输入框 <form name='loginF ...

随机推荐

  1. How can I use wget in Windows

    http://www.ehow.com/how_10054131_use-wget-windows.html

  2. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_方法执行

    [前言] 方法执行前,CLR 会检测方法内代码引用的所有类型.同时 CLR 会分配一个内部数据结构,用来管理对所有引用的类型的访问. 首次执行方法时,托管程序集会把 IL 转换成本地 CPU 指令,并 ...

  3. Codeforces Round #529 (Div. 3) C. Powers Of Two

    http://codeforces.com/contest/1095/problem/C 题意:给n找出k个2的幂,加起来正好等于n.例如 9,4:9 = 1 + 2 + 2 + 4 思路:首先任何数 ...

  4. php返回数据格式

    PHP返回HTML代码:     header('Content-type:text/html; charset=utf-8'); PHP返回xml代码:header('content-type: t ...

  5. hdu 1556 涂气球 线段树(区间更新~对区间[x,y]更新,求任意节点被更新的次数)

    Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. 为经典版eclipse增加web and Java EE插件

    http://download.eclipse.org/releases/luna/ 0 1 2选择对应版本“luna”,http://download.eclipse.org/releases/lu ...

  7. UBoot添加命令的方法

    1. 具体实现步骤 ① 在./common文件夹下新建cmd_led.c,并在此文件中添加如下内容 #include <common.h> #include <command.h&g ...

  8. datetimepicker使用

    常考地址:http://www.bootcss.c 直接上代码: 步骤:1.http://www.bootcss.com/p/bootstrap-datetimepicker/下载包 2.将里面的js ...

  9. spring bean name生成规则

    现象: PVService PVServiceImpl ===>名称就是PVServiceImpl, 首字母没有小写 PageViewServiceImpl ==>名称是pageViewS ...

  10. mysql 操作数据库创建,增删改查

    创建数据库 默认字符编码 默认排序CREATE DATABASE IF NOT EXISTS day11 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; / ...