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

ScrollView监听停止滑动,判断是否滑到底部

2013-07-29 21:59 399 查看
监听停止滑动

本以为ScrollView和ListView一样有setOnScrollListener方法。想不到ScrollView竟然没有。那就只能通过手势触摸事件来判断了。当手离开屏幕时,开始往handler中不断发生消息,直至滑动停止。

判动是否滑到底部

在滑动停止的时候,通过ScrollView和Linearlayout(scrollview的子控件)的高度以及滑动的距离来判断。

 

PS:我的scrollview是横向的,所以使用的是x坐标和width。

 

scrollView.setOnTouchListener(new OnTouchListener() {
private int lastY = 0;
private int touchEventId = 0x1234;
Handler handler = new Handler() {

@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);

View scroller = (View) msg.obj;
if (msg.what == touchEventId) {

if (lastY == scroller.getScrollX()) {
scrollerStop(scroller);
} else {
handler.sendMessageDelayed(handler.obtainMessage(
touchEventId, scroller), 5);
lastY = scroller.getScrollX();
}
}
}
};

@Override
public boolean onTouch(View v, MotionEvent event) {

int eventAction = event.getAction();
int y = (int) event.getRawX();
lastY = 0;
switch (eventAction) {
case MotionEvent.ACTION_UP:
if (lastY != y) {
handler.sendMessageDelayed(
handler.obtainMessage(touchEventId, v), 10);
}
break;
default:
break;
}
return false;
}

/**滑动停止后的响应						*/
private void scrollStop(Object view) {
if(cityLinLayout.getMeasuredWidth() <= (scrollView.getWidth() + scrollView.getScrollX()+5)){
/***
*滑动到底部的操作
*/
}
if(scrollView.getScrollX() < 0){

/***
*滑动到顶部的操作
*/
}
}

});

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android scrollview