scrollview 使用setOnTouchListener后停止滑动:
解决办法:
一、
int touchY = 0;
private boolean isScoll ;
private void scrollView() {
behavorLayout.setOnTouchListener(new OnTouchListener() {
private int lastY = 0;
private int touchEventId = -9983761;
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.getScrollY()) {
handleStop(scroller);
} else {
handler.sendMessageDelayed(handler.obtainMessage(
touchEventId, scroller), 1);
lastY = scroller.getScrollY();
}
}
}
};
@Override
public boolean onTouch(View v, MotionEvent event) {
isScoll = false;
int eventAction = event.getAction();
int y = (int) event.getRawY();
switch (eventAction) {
case MotionEvent.ACTION_UP:
if (Math.abs(touchY - y) < 20) {
} else {
handler.sendMessageDelayed(handler.obtainMessage(
touchEventId, v), 5);
}
break;
default:
break;
}
return false;
}
private void handleStop(Object view) {
this.finish(); //添加处理的代码
}
});
}
解决办法二、
public ScrollView scrollView;
private int scrollViewY;
scrollView = (ScrollView)findViewById(R.id.viewStatusDetailSV);
scrollView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
/** 滑动到顶部和底部做处理 **/
if (scrollView.getScrollY() == 0) {
Toast.makeText(context, "到达顶部了", Toast.LENGTH_SHORT).show();
} else if (scrollView.getScrollY() - scrollViewY < 2 && scrollView.getScrollY() >= scrollViewY) {
Toast.makeText(context, "到达底部了" + scrollView.getScrollY(), Toast.LENGTH_SHORT).show();
} else {
scrollViewY = scrollView.getScrollY();
}
//添加处理的代码
}
return false;
}
});