您的位置:首页 > 移动开发 > Android开发

Android 监听ScrollView时候滚动到了底部

2014-10-11 18:08 471 查看
package com.zy.tour.util.ui;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.LinearLayout;
import android.widget.ScrollView;

/**
* @类名:BottomScrollView
* @功能描述: 监听ScrollView时候滚动到底部
* @作者:XuanKe'Huang
* @时间:2014-10-10 下午3:17:56
* @Copyright 2014
*/

public class BottomScrollView extends ScrollView {

private OnScrollToBottomListener onScrollToBottom;

public BottomScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

public BottomScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public BottomScrollView(Context context) {
super(context);
}

/**
* 方法名: setOnScrollToBottomLintener
*
* 功能描述:设置监听
*
* @param listener
* @param layout
*            ScrollView包含的Layout
* @return void
*
*         throws
*/
public void setOnScrollToBottomLintener(OnScrollToBottomListener listener,
LinearLayout layout) {
this.layout = layout;
onScrollToBottom = listener;
}

public interface OnScrollToBottomListener {
// 当前滑动的距离
public void onScrollBottomListener(int top);

// 手指离开了屏幕
public void FingerUpLinstener(boolean moveDistance);
}

private LinearLayout layout;
private int startY = 0;// 开始点
private int moveDistance = 0;// 移动的距离

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:// 手指按下
startY = (int) ev.getRawY();
break;
case MotionEvent.ACTION_MOVE:// 手指移动
moveDistance = (int) (startY - ev.getRawY());
if (this.getScrollY() + this.getHeight() >= layout.getHeight()
&& moveDistance > 50) {
onScrollToBottom.onScrollBottomListener(moveDistance);
}
break;
case MotionEvent.ACTION_UP:// 手指离开
if (this.getScrollY() + this.getHeight() >= layout.getHeight()) {
if (moveDistance > 100) {
onScrollToBottom.FingerUpLinstener(true);
} else {
onScrollToBottom.FingerUpLinstener(false);
}
}
startY = 0;
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: