diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java index 69803624..3308efb4 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java @@ -24,6 +24,7 @@ import androidx.lifecycle.ViewModelProvider; import androidx.navigation.NavController; import androidx.navigation.NavGraph; +import androidx.navigation.NavOptions; import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.ui.AppBarConfiguration; import androidx.navigation.ui.NavigationUI; @@ -217,10 +218,25 @@ private void observeViewModel() { navGraph.setStartDestination(uiState.getDefaultNavDestination()); navController.setGraph(navGraph); + NavOptions springNavOptions = new NavOptions.Builder() + .setEnterAnim(R.anim.fragment_spring_enter) + .setExitAnim(R.anim.fragment_spring_exit) + .setPopEnterAnim(R.anim.fragment_spring_pop_enter) + .setPopExitAnim(R.anim.fragment_spring_pop_exit) + .build(); + if (mBinding.navView instanceof BottomNavigationView bottomNav) { NavigationUI.setupWithNavController(bottomNav, navController); + bottomNav.setOnItemSelectedListener(item -> { + navController.navigate(item.getItemId(), null, springNavOptions); + return true; + }); } else if (mBinding.navView instanceof NavigationRailView railView) { NavigationUI.setupWithNavController(railView, navController); + railView.setOnItemSelectedListener(item -> { + navController.navigate(item.getItemId(), null, springNavOptions); + return true; + }); } setSupportActionBar(mBinding.toolbar); diff --git a/app/src/main/res/anim/fragment_spring_enter.xml b/app/src/main/res/anim/fragment_spring_enter.xml new file mode 100644 index 00000000..0bded03a --- /dev/null +++ b/app/src/main/res/anim/fragment_spring_enter.xml @@ -0,0 +1,13 @@ + + +
+ + diff --git a/app/src/main/res/anim/fragment_spring_exit.xml b/app/src/main/res/anim/fragment_spring_exit.xml new file mode 100644 index 00000000..e7d0be19 --- /dev/null +++ b/app/src/main/res/anim/fragment_spring_exit.xml @@ -0,0 +1,13 @@ + + +
+ + diff --git a/app/src/main/res/anim/fragment_spring_pop_enter.xml b/app/src/main/res/anim/fragment_spring_pop_enter.xml new file mode 100644 index 00000000..f734c469 --- /dev/null +++ b/app/src/main/res/anim/fragment_spring_pop_enter.xml @@ -0,0 +1,13 @@ + + +
+ + diff --git a/app/src/main/res/anim/fragment_spring_pop_exit.xml b/app/src/main/res/anim/fragment_spring_pop_exit.xml new file mode 100644 index 00000000..3ef11c06 --- /dev/null +++ b/app/src/main/res/anim/fragment_spring_pop_exit.xml @@ -0,0 +1,13 @@ + + +
+ + diff --git a/app/src/main/res/interpolator/fragment_spring.xml b/app/src/main/res/interpolator/fragment_spring.xml new file mode 100644 index 00000000..8621c6b4 --- /dev/null +++ b/app/src/main/res/interpolator/fragment_spring.xml @@ -0,0 +1,3 @@ + + diff --git a/app/src/main/res/transition/fragment_spring.xml b/app/src/main/res/transition/fragment_spring.xml new file mode 100644 index 00000000..9f2ecf81 --- /dev/null +++ b/app/src/main/res/transition/fragment_spring.xml @@ -0,0 +1,9 @@ + +
+ + +

AltStyle によって変換されたページ (->オリジナル) /