效果圖:ide
第一步設置滑動監聽事件:佈局
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; } });
第三步添加動畫效果:spa
須要注意的是 這個屬性方法必定是要在須要隱藏的佈局的父佈局中去設置 否則會沒有效果3d