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 f5e57560..d898a388 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
@@ -1,6 +1,7 @@
package com.d4rk.androidtutorials.java.ui.screens.main;
import android.Manifest;
+import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
@@ -253,20 +254,6 @@ private void observeViewModel() {
}
}
- NavOptions forwardOptions = 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();
-
- NavOptions backwardOptions = new NavOptions.Builder()
- .setEnterAnim(R.anim.fragment_spring_pop_enter)
- .setExitAnim(R.anim.fragment_spring_pop_exit)
- .setPopEnterAnim(R.anim.fragment_spring_enter)
- .setPopExitAnim(R.anim.fragment_spring_exit)
- .build();
-
androidx.navigation.NavDestination destination = navController.getCurrentDestination();
if (destination != null) {
currentNavIndex = navOrder.get(destination.getId(), currentNavIndex);
@@ -281,7 +268,7 @@ private void observeViewModel() {
return true;
}
int newIndex = navOrder.get(item.getItemId());
- NavOptions options = newIndex > currentNavIndex ? forwardOptions : backwardOptions;
+ NavOptions options = applyTopLevelNavAnimations(new NavOptions.Builder()).build();
navController.navigate(item.getItemId(), null, options);
currentNavIndex = newIndex;
return true;
@@ -295,7 +282,7 @@ private void observeViewModel() {
return true;
}
int newIndex = navOrder.get(item.getItemId());
- NavOptions options = newIndex > currentNavIndex ? forwardOptions : backwardOptions;
+ NavOptions options = applyTopLevelNavAnimations(new NavOptions.Builder()).build();
navController.navigate(item.getItemId(), null, options);
currentNavIndex = newIndex;
return true;
@@ -316,6 +303,21 @@ private void observeViewModel() {
});
}
+ private NavOptions.Builder applyTopLevelNavAnimations(NavOptions.Builder builder) {
+ if (ValueAnimator.areAnimatorsEnabled()) {
+ builder.setEnterAnim(R.anim.fragment_top_level_enter)
+ .setExitAnim(R.anim.fragment_top_level_exit)
+ .setPopEnterAnim(R.anim.fragment_top_level_enter)
+ .setPopExitAnim(R.anim.fragment_top_level_exit);
+ } else {
+ builder.setEnterAnim(0)
+ .setExitAnim(0)
+ .setPopEnterAnim(0)
+ .setPopExitAnim(0);
+ }
+ return builder;
+ }
+
private void navigateToPreferredDestination(int preferredDestination) {
if (navController == null) {
@@ -328,10 +330,11 @@ private void navigateToPreferredDestination(int preferredDestination) {
lastPreferredStartDestination = preferredDestination;
return;
}
- NavOptions options = new NavOptions.Builder()
- .setPopUpTo(graph.getStartDestinationId(), true)
- .setLaunchSingleTop(true)
- .build();
+ NavOptions options = applyTopLevelNavAnimations(
+ new NavOptions.Builder()
+ .setPopUpTo(graph.getStartDestinationId(), true)
+ .setLaunchSingleTop(true)
+ ).build();
navController.navigate(preferredDestination, null, options);
lastPreferredStartDestination = preferredDestination;
}
diff --git a/app/src/main/res/anim/fragment_spring_enter.xml b/app/src/main/res/anim/fragment_spring_enter.xml
deleted file mode 100644
index d3f014fe..00000000
--- a/app/src/main/res/anim/fragment_spring_enter.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/anim/fragment_spring_exit.xml b/app/src/main/res/anim/fragment_spring_exit.xml
deleted file mode 100644
index a73a5655..00000000
--- a/app/src/main/res/anim/fragment_spring_exit.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/anim/fragment_spring_interpolator.xml b/app/src/main/res/anim/fragment_spring_interpolator.xml
deleted file mode 100644
index 900ad8c9..00000000
--- a/app/src/main/res/anim/fragment_spring_interpolator.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
diff --git a/app/src/main/res/anim/fragment_spring_pop_enter.xml b/app/src/main/res/anim/fragment_spring_pop_enter.xml
deleted file mode 100644
index 511d2073..00000000
--- a/app/src/main/res/anim/fragment_spring_pop_enter.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/anim/fragment_spring_pop_exit.xml b/app/src/main/res/anim/fragment_spring_pop_exit.xml
deleted file mode 100644
index 91d60747..00000000
--- a/app/src/main/res/anim/fragment_spring_pop_exit.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
diff --git a/app/src/main/res/anim/fragment_top_level_enter.xml b/app/src/main/res/anim/fragment_top_level_enter.xml
new file mode 100644
index 00000000..0b137a3d
--- /dev/null
+++ b/app/src/main/res/anim/fragment_top_level_enter.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
diff --git a/app/src/main/res/anim/fragment_top_level_exit.xml b/app/src/main/res/anim/fragment_top_level_exit.xml
new file mode 100644
index 00000000..9f2fddf8
--- /dev/null
+++ b/app/src/main/res/anim/fragment_top_level_exit.xml
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/app/src/main/res/transition/fragment_spring.xml b/app/src/main/res/transition/fragment_spring.xml
deleted file mode 100644
index 77f1d53b..00000000
--- a/app/src/main/res/transition/fragment_spring.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-