summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yi-Ling Chuang <emilychuang@google.com> 2021-05-26 18:27:54 +0800
committer Yi-Ling Chuang <emilychuang@google.com> 2021-06-03 11:47:15 +0800
commit270f5be2ba6534d95dc817a5f4d5109536e9b011 (patch)
tree5efa703c4039214d715b7344ac1f435f8d631c91
parent8da1945d8bb4fabdd4e43a290a9b89b0edcd3cc8 (diff)
Support fragment transition
Bug: 189115008 Test: rebuild Change-Id: I026524cb6ac5cf9d815a7350c8f0cc220eb7c43b
-rw-r--r--packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java50
1 files changed, 48 insertions, 2 deletions
diff --git a/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java b/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java
index 4612861b5766..a6eeb8867346 100644
--- a/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java
+++ b/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java
@@ -25,6 +25,7 @@ import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import androidx.core.os.BuildCompat;
+import androidx.fragment.app.Fragment;
import com.google.android.material.transition.platform.FadeThroughProvider;
import com.google.android.material.transition.platform.MaterialSharedAxis;
@@ -92,7 +93,7 @@ public class SettingsTransitionHelper {
* triggered when the page is launched/entering.
*/
public static void applyForwardTransition(Activity activity) {
- if (!BuildCompat.isAtLeastS()) {
+ if (!isSettingsTransitionEnabled()) {
return;
}
if (activity == null) {
@@ -118,7 +119,7 @@ public class SettingsTransitionHelper {
* previously-started Activity.
*/
public static void applyBackwardTransition(Activity activity) {
- if (!BuildCompat.isAtLeastS()) {
+ if (!isSettingsTransitionEnabled()) {
return;
}
if (activity == null) {
@@ -134,4 +135,49 @@ public class SettingsTransitionHelper {
window.setReturnTransition(backward);
window.setReenterTransition(backward);
}
+
+ /**
+ * Apply the forward transition to the {@link Fragment}, including Exit Transition and Enter
+ * Transition.
+ *
+ * The Exit Transition takes effect when leaving the page, while the Enter Transition is
+ * triggered when the page is launched/entering.
+ */
+ public static void applyForwardTransition(Fragment fragment) {
+ if (!isSettingsTransitionEnabled()) {
+ return;
+ }
+ if (fragment == null) {
+ Log.w(TAG, "applyForwardTransition: Invalid fragment!");
+ return;
+ }
+ final MaterialSharedAxis forward = createSettingsSharedAxis(fragment.getContext(), true);
+ fragment.setExitTransition(forward);
+ fragment.setEnterTransition(forward);
+ }
+
+ /**
+ * Apply the backward transition to the {@link Fragment}, including Return Transition and
+ * Reenter Transition.
+ *
+ * Return Transition will be used to move Views out of the scene when the Window is preparing
+ * to close. Reenter Transition will be used to move Views in to the scene when returning from a
+ * previously-started Fragment.
+ */
+ public static void applyBackwardTransition(Fragment fragment) {
+ if (!isSettingsTransitionEnabled()) {
+ return;
+ }
+ if (fragment == null) {
+ Log.w(TAG, "applyBackwardTransition: Invalid fragment!");
+ return;
+ }
+ final MaterialSharedAxis backward = createSettingsSharedAxis(fragment.getContext(), false);
+ fragment.setReturnTransition(backward);
+ fragment.setReenterTransition(backward);
+ }
+
+ private static boolean isSettingsTransitionEnabled() {
+ return BuildCompat.isAtLeastS();
+ }
}