From abf096f21f7395202858c34eaa9f0f8195c1777d Mon Sep 17 00:00:00 2001 From: Yi-Ling Chuang Date: Wed, 26 May 2021 17:36:20 +0800 Subject: [PATCH] Provide a way to suppress page transitions. Some pages are not suitable to apply the page transition, for example, launching an acitivity that is depending on a value in the config file. External apps that are not applying the same transition may be launched in this case, applying the transition may lead to some unexpected behaviour. Hence, create a way to ignore the transition. Also refactor some logics. Fixes: 189299479 Test: rebuild Change-Id: Iebb47b9e0b0d9a3496f7e5f0c6cf1cd3d8d75031 --- .../SettingsTransitionActivity.java | 44 ++++--------------- .../transition/SettingsTransitionHelper.java | 2 + 2 files changed, 11 insertions(+), 35 deletions(-) diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java index 4c45c5e3cb567..8c2621d3e4ec2 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java @@ -16,6 +16,8 @@ package com.android.settingslib.collapsingtoolbar; +import static com.android.settingslib.transition.SettingsTransitionHelper.EXTRA_PAGE_TRANSITION_TYPE; + import android.app.ActivityOptions; import android.content.Intent; import android.os.Bundle; @@ -28,6 +30,7 @@ import androidx.core.os.BuildCompat; import androidx.fragment.app.FragmentActivity; import com.android.settingslib.transition.SettingsTransitionHelper; +import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType; /** * A base Activity for Settings-specific page transition. Activities extending it will get @@ -35,7 +38,6 @@ import com.android.settingslib.transition.SettingsTransitionHelper; */ public abstract class SettingsTransitionActivity extends FragmentActivity { private static final String TAG = "SettingsTransitionActivity"; - private static final int DEFAULT_REQUEST = -1; private Toolbar mToolbar; @@ -57,46 +59,18 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { mToolbar = toolbar; } - @Override - public void startActivity(Intent intent) { - if (!isSettingsTransitionEnabled()) { - super.startActivity(intent); - return; - } - - super.startActivity(intent, createActivityOptionsBundleForTransition(null)); - } - - @Override - public void startActivity(Intent intent, @Nullable Bundle options) { - if (!isSettingsTransitionEnabled()) { - super.startActivity(intent, options); - return; - } - - super.startActivity(intent, createActivityOptionsBundleForTransition(options)); - } - - @Override - public void startActivityForResult(Intent intent, int requestCode) { - if (!isSettingsTransitionEnabled() || requestCode == DEFAULT_REQUEST) { - super.startActivityForResult(intent, requestCode); - return; - } - - super.startActivityForResult(intent, requestCode, createActivityOptionsBundleForTransition( - null)); - } - @Override public void startActivityForResult(Intent intent, int requestCode, @Nullable Bundle options) { - if (!isSettingsTransitionEnabled() || requestCode == DEFAULT_REQUEST) { + final int transitionType = intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE, + TransitionType.TRANSITION_SHARED_AXIS); + if (!isSettingsTransitionEnabled() || + transitionType == TransitionType.TRANSITION_NONE) { super.startActivityForResult(intent, requestCode, options); return; } - super.startActivityForResult(intent, requestCode, createActivityOptionsBundleForTransition( - options)); + super.startActivityForResult(intent, requestCode, + createActivityOptionsBundleForTransition(options)); } protected boolean isSettingsTransitionEnabled() { 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 3d93964926431..4612861b5766f 100644 --- a/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java +++ b/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java @@ -55,6 +55,8 @@ public class SettingsTransitionHelper { int TRANSITION_FADE = 2; } + public static final String EXTRA_PAGE_TRANSITION_TYPE = "page_transition_type"; + private static final String TAG = "SettingsTransitionHelper"; private static final long DURATION = 450L; private static final float FADE_THROUGH_THRESHOLD = 0.22F;