Android:下拉上滑显示与隐藏底部导航栏和顶部状态栏
效果图:
第一步设置滑动监听事件:
recyclerview.setOnTouchListener(new View.OnTouchListener() { private float mEndY; private float mStartY; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mStartY = event.getY(); break; case MotionEvent.ACTION_MOVE: mEndY = event.getY(); float v1 = mEndY - mStartY; if (v1 > 3) {
//我这个是在fragment中的操作 这个是获取activity中的布局 getActivity().findViewById(R.id.ll_menu).setVisibility(View.VISIBLE);
//这个就是当前页面的头布局idnormalTitleBlueTitle.setVisibility(View.VISIBLE); } else if (v1 < -3) { getActivity().findViewById(R.id.ll_menu).setVisibility(View.GONE); normalTitleBlueTitle.setVisibility(View.GONE); } break; case MotionEvent.ACTION_UP: break; }
//这里一定要返回gestureDetector.onTouchEvent(event) 不然滑动监听无效 return gestureDetector.onTouchEvent(event); } });
第二步:
GestureDetector gestureDetector = new GestureDetector(getContext(), new GestureDetector.OnGestureListener() { @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { // do something return true; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } });
第三步添加动画效果:
需要注意的是 这个属性方法一定是要在需要隐藏的布局的父布局中去设置 不然会没有效果