Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit eca9bec

Browse files
Merge pull request #76 from MihaiCristianCondrea/codex/add-navcontroller-transitions-with-spring-effects
Add spring-based navigation transitions
2 parents c88a00d + 5dabe47 commit eca9bec

File tree

7 files changed

+80
-0
lines changed

7 files changed

+80
-0
lines changed

‎app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import androidx.lifecycle.ViewModelProvider;
2525
import androidx.navigation.NavController;
2626
import androidx.navigation.NavGraph;
27+
import androidx.navigation.NavOptions;
2728
import androidx.navigation.fragment.NavHostFragment;
2829
import androidx.navigation.ui.AppBarConfiguration;
2930
import androidx.navigation.ui.NavigationUI;
@@ -217,10 +218,25 @@ private void observeViewModel() {
217218
navGraph.setStartDestination(uiState.getDefaultNavDestination());
218219
navController.setGraph(navGraph);
219220

221+
NavOptions springNavOptions = new NavOptions.Builder()
222+
.setEnterAnim(R.anim.fragment_spring_enter)
223+
.setExitAnim(R.anim.fragment_spring_exit)
224+
.setPopEnterAnim(R.anim.fragment_spring_pop_enter)
225+
.setPopExitAnim(R.anim.fragment_spring_pop_exit)
226+
.build();
227+
220228
if (mBinding.navView instanceof BottomNavigationView bottomNav) {
221229
NavigationUI.setupWithNavController(bottomNav, navController);
230+
bottomNav.setOnItemSelectedListener(item -> {
231+
navController.navigate(item.getItemId(), null, springNavOptions);
232+
return true;
233+
});
222234
} else if (mBinding.navView instanceof NavigationRailView railView) {
223235
NavigationUI.setupWithNavController(railView, navController);
236+
railView.setOnItemSelectedListener(item -> {
237+
navController.navigate(item.getItemId(), null, springNavOptions);
238+
return true;
239+
});
224240
}
225241

226242
setSupportActionBar(mBinding.toolbar);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android">
3+
<translate
4+
android:fromXDelta="100%"
5+
android:toXDelta="0%"
6+
android:duration="300"
7+
android:interpolator="@interpolator/fragment_spring" />
8+
<alpha
9+
android:fromAlpha="0"
10+
android:toAlpha="1"
11+
android:duration="300"
12+
android:interpolator="@interpolator/fragment_spring" />
13+
</set>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android">
3+
<translate
4+
android:fromXDelta="0%"
5+
android:toXDelta="-100%"
6+
android:duration="300"
7+
android:interpolator="@interpolator/fragment_spring" />
8+
<alpha
9+
android:fromAlpha="1"
10+
android:toAlpha="0"
11+
android:duration="300"
12+
android:interpolator="@interpolator/fragment_spring" />
13+
</set>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android">
3+
<translate
4+
android:fromXDelta="-100%"
5+
android:toXDelta="0%"
6+
android:duration="300"
7+
android:interpolator="@interpolator/fragment_spring" />
8+
<alpha
9+
android:fromAlpha="0"
10+
android:toAlpha="1"
11+
android:duration="300"
12+
android:interpolator="@interpolator/fragment_spring" />
13+
</set>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<set xmlns:android="http://schemas.android.com/apk/res/android">
3+
<translate
4+
android:fromXDelta="0%"
5+
android:toXDelta="100%"
6+
android:duration="300"
7+
android:interpolator="@interpolator/fragment_spring" />
8+
<alpha
9+
android:fromAlpha="1"
10+
android:toAlpha="0"
11+
android:duration="300"
12+
android:interpolator="@interpolator/fragment_spring" />
13+
</set>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:tension="1.0"/>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
3+
<changeBounds
4+
android:duration="300"
5+
android:interpolator="@interpolator/fragment_spring" />
6+
<fade
7+
android:duration="300"
8+
android:interpolator="@interpolator/fragment_spring" />
9+
</transitionSet>

0 commit comments

Comments
(0)

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