diff options
author | 2021-05-26 18:27:54 +0800 | |
---|---|---|
committer | 2021-06-03 11:47:15 +0800 | |
commit | 270f5be2ba6534d95dc817a5f4d5109536e9b011 (patch) | |
tree | 5efa703c4039214d715b7344ac1f435f8d631c91 | |
parent | 8da1945d8bb4fabdd4e43a290a9b89b0edcd3cc8 (diff) |
Support fragment transition
Bug: 189115008
Test: rebuild
Change-Id: I026524cb6ac5cf9d815a7350c8f0cc220eb7c43b
-rw-r--r-- | packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java | 50 |
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(); + } } |