public static void navigate(int direction, AppBarLayout appBarLayout, Navigable navigable) { switch (direction) { case Navigable.DIRECTION_DOWN: case Navigable.DIRECTION_RIGHT: if (appBarLayout.getBottom() == 0) { navigable.onNavigate(direction); } else { appBarLayout.setExpanded(false, true); } break; default: navigable.onNavigate(direction); break; } }
@Override public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float velocityX, float velocityY) { int direction; if (Math.abs(velocityX) > Math.abs(velocityY)) { direction = velocityX < 0 ? Navigable.DIRECTION_LEFT : Navigable.DIRECTION_RIGHT; } else { direction = velocityY < 0 ? Navigable.DIRECTION_UP : Navigable.DIRECTION_DOWN; } mNavigable.onNavigate(direction); if (mVibrationEnabled) { mVibrator.vibrate(VIBRATE_DURATION_MS); } trackKonami(direction); return false; }
@Test public void testSwipeRight() { gestureListener.onFling(null, null, 1f, 0f); // right verify(navigable).onNavigate(eq(Navigable.DIRECTION_RIGHT)); }
@Test public void testSwipeUp() { gestureListener.onFling(null, null, 0f, -1f); // up verify(navigable).onNavigate(eq(Navigable.DIRECTION_UP)); }
@Test public void testSwipeDown() { gestureListener.onFling(null, null, 0f, 1f); // down verify(navigable).onNavigate(eq(Navigable.DIRECTION_DOWN)); }
@Test public void testSwipeLeft() { gestureListener.onFling(null, null, -1f, 0f); // left verify(navigable).onNavigate(eq(Navigable.DIRECTION_LEFT)); }
@Test public void testNavigate() { AppBarLayout appBar = mock(AppBarLayout.class); when(appBar.getBottom()).thenReturn(1); Navigable navigable = mock(Navigable.class); AppUtils.navigate(Navigable.DIRECTION_DOWN, appBar, navigable); verify(appBar).setExpanded(eq(false), anyBoolean()); verify(navigable, never()).onNavigate(anyInt()); when(appBar.getBottom()).thenReturn(0); AppUtils.navigate(Navigable.DIRECTION_DOWN, appBar, navigable); verify(navigable).onNavigate(eq(Navigable.DIRECTION_DOWN)); AppUtils.navigate(Navigable.DIRECTION_RIGHT, appBar, navigable); verify(navigable).onNavigate(eq(Navigable.DIRECTION_RIGHT)); AppUtils.navigate(Navigable.DIRECTION_UP, appBar, navigable); verify(navigable).onNavigate(eq(Navigable.DIRECTION_UP)); AppUtils.navigate(Navigable.DIRECTION_LEFT, appBar, navigable); verify(navigable).onNavigate(eq(Navigable.DIRECTION_LEFT)); } }
.onNavigate(direction)); AppUtils.toggleFab(mNavButton, false); AppUtils.toggleFab(mReplyButton, false);