Android ScrollView 控件的滑动监听
1.直接给Scroll View一个setOnTouchListener,在onTouch方法调用Handle中的方法,每次调用都要将当前的Y位置保存下来,又来与下次的位置进行比较,以此来判断当前状态相对于上次的位置变化,直接上代码。
2.代码 `
private void Scroll(){
mscrollView.setOnTouchListener(new View.OnTouchListener() {
private int lastY = 0;
private int touchEventId = -9983761;
@SuppressLint("ClickableViewAccessibility")
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()) {
lastY = scroller.getScrollY();
} else if(lastY > scroller.getScrollY()) {
bottomNavigationView.setVisibility(View.VISIBLE);
handler.sendMessageDelayed(handler.obtainMessage(touchEventId, scroller), 1);
lastY = scroller.getScrollY();
}else{
bottomNavigationView.setVisibility(View.GONE);
handler.sendMessageDelayed(handler.obtainMessage(touchEventId, scroller), 1);
lastY = scroller.getScrollY();
}
}
}
};
@Override
public boolean onTouch(View v, MotionEvent event) {
int eventAction = event.getAction();
switch (eventAction) {
case MotionEvent.ACTION_UP:
handler.sendMessageDelayed(handler.obtainMessage(touchEventId, v), 5);
break;
default:
break;
}
return false;
}
});
}