监听ScrollView滑动到顶端和底部

简介: MainActivity如下: package cn.testscrollview;import android.os.Bundle;import android.

MainActivity如下:

package cn.testscrollview;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ScrollView;
import android.app.Activity;
/**
 * Demo描述:
 * 监听ScrollView滑动到顶端和底部
 * 
 * 注意事项:
 * 1 mScrollView.getChildAt(0).getMeasuredHeight()表示:
 *   ScrollView所占的高度.即ScrollView内容的高度.常常有一
 *   部分内容要滑动后才可见,这部分的高度也包含在了
 *   mScrollView.getChildAt(0).getMeasuredHeight()中
 *   
 * 2 view.getScrollY表示:
 *   ScrollView顶端已经滑出去的高度
 *   
 * 3 view.getHeight()表示:
 *   ScrollView的可见高度
 *   
 */
public class MainActivity extends Activity {
    private ScrollView mScrollView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
    private void init(){
    	mScrollView=(ScrollView) findViewById(R.id.scrollView);
    	mScrollView.setOnTouchListener(new TouchListenerImpl());
    }
    private class TouchListenerImpl implements OnTouchListener{
		@Override
		public boolean onTouch(View view, MotionEvent motionEvent) {
			switch (motionEvent.getAction()) {
			case MotionEvent.ACTION_DOWN:

				break;
			case MotionEvent.ACTION_MOVE:
				 int scrollY=view.getScrollY();
				 int height=view.getHeight();
				 int scrollViewMeasuredHeight=mScrollView.getChildAt(0).getMeasuredHeight();
				 if(scrollY==0){
	                	System.out.println("滑动到了顶端 view.getScrollY()="+scrollY);
	                }
	             if((scrollY+height)==scrollViewMeasuredHeight){
	                    System.out.println("滑动到了底部 scrollY="+scrollY);
	                	System.out.println("滑动到了底部 height="+height);
	                	System.out.println("滑动到了底部 scrollViewMeasuredHeight="+scrollViewMeasuredHeight);
	                }
				break;

			default:
				break;
			}
			return false;
		}
    	
    };
}

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"/>
    </ScrollView>
</RelativeLayout>


相关文章
|
XML 前端开发 Android开发
Android NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端
Android NestedScrollView滚动到顶部固定子View悬停挂靠粘在顶端 网上有一个StickyScrollView,称之为粘性ScrollView,比如一个垂直方向的布局,依次摆放几个子View,当某一个子View滚到到顶端时候要停靠在顶部,悬停在顶部的位置不动。
2788 0
刚进入页面时UIScrollView没有滑动到顶部
刚进入页面时UIScrollView没有滑动到顶部
53 0
|
iOS开发
iOS开发 - ScrollView滚动时怎么判断滚动停止及滚动的方向
iOS开发 - ScrollView滚动时怎么判断滚动停止及滚动的方向
821 0
|
XML Android开发 数据格式
Activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现---Android提高篇
Activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现---Android提高篇
923 0
|
Android开发
Android 自定义控件之SlidingMenuVertical顶部悬浮(垂直折叠抽屉,有滑动渐变回调,可自行添加渐变动画)
顶部悬浮(垂直折叠抽屉,有滑动渐变回调,可自行添加渐变动画)
2012 0
|
容器 定位技术 JavaScript
滑动吸顶效果
使用vue组件构成整体页面,顶部titlebar,中间轮播banner,底部iscroll滑动部分,滑动到吸顶的时候初始化底部iscroll,继而导致页面监听滑动失效;
2252 0
|
Android开发
让 Toolbar 随着 RecyclerView 的滚动而显示/隐藏
本文讲的是让 Toolbar 随着 RecyclerView 的滚动而显示/隐藏,在这篇文章中,我们将看到如何实现像Google+ 应用程序一样,当列表下滑时,Toolbar和FAB(包括其他的View)隐藏;当列表上滑时,Toolbar和FAB(包括其他的View)显示的效果;这种效果在Material Design Checklist提到过.
1837 0
触屏事件-上下左右滑动
window.touchMove=function(){ // 用于纪录触摸开始时的坐标 var startX=0,startY=0, //创建一个变量,用于保存触摸方向 touchDirection=""; //创建一个对象,用于保存滑动事件 var funcs = {}; if(arguments.
1286 0
|
Android开发 消息中间件