diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index 73c473a27ff..3ed305eff23 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -182,6 +182,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements showSuggestionFragment(scrollNeeded); if (FeatureFlagUtils.isEnabled(this, FeatureFlags.CONTEXTUAL_HOME)) { showFragment(() -> new ContextualCardsFragment(), R.id.contextual_cards_content); + ((FrameLayout) findViewById(R.id.main_content)) + .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); } } mMainFragment = showFragment(() -> { @@ -191,9 +193,6 @@ public class SettingsHomepageActivity extends FragmentActivity implements return fragment; }, R.id.main_content); - ((FrameLayout) findViewById(R.id.main_content)) - .getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); - // Launch the intent from deep link for large screen devices. launchDeepLinkIntentToRight(); } diff --git a/src/com/android/settings/homepage/TopLevelHighlightMixin.java b/src/com/android/settings/homepage/TopLevelHighlightMixin.java index ebfe7f204a6..c473e87eeca 100644 --- a/src/com/android/settings/homepage/TopLevelHighlightMixin.java +++ b/src/com/android/settings/homepage/TopLevelHighlightMixin.java @@ -23,7 +23,6 @@ import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; -import androidx.fragment.app.FragmentActivity; import androidx.preference.PreferenceScreen; import androidx.recyclerview.widget.RecyclerView; @@ -43,14 +42,17 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho private String mHiddenKey; private DialogInterface mDialog; private HighlightableTopLevelPreferenceAdapter mTopLevelAdapter; + private boolean mActivityEmbedded; - public TopLevelHighlightMixin() { + public TopLevelHighlightMixin(boolean activityEmbedded) { + mActivityEmbedded = activityEmbedded; } public TopLevelHighlightMixin(Parcel source) { mCurrentKey = source.readString(); mPreviousKey = source.readString(); mHiddenKey = source.readString(); + mActivityEmbedded = source.readBoolean(); } @Override @@ -58,6 +60,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho dest.writeString(mCurrentKey); dest.writeString(mPreviousKey); dest.writeString(mHiddenKey); + dest.writeBoolean(mActivityEmbedded); } @Override @@ -96,8 +99,16 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho } } + void setActivityEmbedded(boolean activityEmbedded) { + mActivityEmbedded = activityEmbedded; + } + + boolean isActivityEmbedded() { + return mActivityEmbedded; + } + RecyclerView.Adapter onCreateAdapter(TopLevelSettings topLevelSettings, - PreferenceScreen preferenceScreen) { + PreferenceScreen preferenceScreen, boolean scrollNeeded) { if (TextUtils.isEmpty(mCurrentKey)) { mCurrentKey = getHighlightPrefKeyFromArguments(topLevelSettings.getArguments()); } @@ -105,7 +116,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho Log.d(TAG, "onCreateAdapter, pref key: " + mCurrentKey); mTopLevelAdapter = new HighlightableTopLevelPreferenceAdapter( (SettingsHomepageActivity) topLevelSettings.getActivity(), preferenceScreen, - topLevelSettings.getListView(), mCurrentKey); + topLevelSettings.getListView(), mCurrentKey, scrollNeeded); return mTopLevelAdapter; } @@ -129,7 +140,7 @@ public class TopLevelHighlightMixin implements Parcelable, DialogInterface.OnSho } } - void highlightPreferenceIfNeeded(FragmentActivity activity) { + void highlightPreferenceIfNeeded() { if (mTopLevelAdapter != null) { mTopLevelAdapter.requestHighlight(); } diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java index 734e079537d..26fa4ed298a 100644 --- a/src/com/android/settings/homepage/TopLevelSettings.java +++ b/src/com/android/settings/homepage/TopLevelSettings.java @@ -58,6 +58,7 @@ public class TopLevelSettings extends DashboardFragment implements private boolean mIsEmbeddingActivityEnabled; private TopLevelHighlightMixin mHighlightMixin; + private boolean mScrollNeeded = true; private boolean mFirstStarted = true; public TopLevelSettings() { @@ -133,11 +134,14 @@ public class TopLevelSettings extends DashboardFragment implements return; } + boolean activityEmbedded = SplitController.getInstance().isActivityEmbedded(getActivity()); if (icicle != null) { mHighlightMixin = icicle.getParcelable(SAVED_HIGHLIGHT_MIXIN); + mScrollNeeded = !mHighlightMixin.isActivityEmbedded() && activityEmbedded; + mHighlightMixin.setActivityEmbedded(activityEmbedded); } if (mHighlightMixin == null) { - mHighlightMixin = new TopLevelHighlightMixin(); + mHighlightMixin = new TopLevelHighlightMixin(activityEmbedded); } } @@ -201,7 +205,7 @@ public class TopLevelSettings extends DashboardFragment implements @Override public void highlightPreferenceIfNeeded() { if (mHighlightMixin != null) { - mHighlightMixin.highlightPreferenceIfNeeded(getActivity()); + mHighlightMixin.highlightPreferenceIfNeeded(); } } @@ -243,7 +247,7 @@ public class TopLevelSettings extends DashboardFragment implements if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) { return super.onCreateAdapter(preferenceScreen); } - return mHighlightMixin.onCreateAdapter(this, preferenceScreen); + return mHighlightMixin.onCreateAdapter(this, preferenceScreen, mScrollNeeded); } @Override diff --git a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java index ddd57f3a76d..911aabb13b8 100644 --- a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java +++ b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java @@ -67,10 +67,12 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt private SparseArray mViewHolders; public HighlightableTopLevelPreferenceAdapter(SettingsHomepageActivity homepageActivity, - PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key) { + PreferenceGroup preferenceGroup, RecyclerView recyclerView, String key, + boolean scrollNeeded) { super(preferenceGroup); mRecyclerView = recyclerView; mHighlightKey = key; + mScrolled = !scrollNeeded; mViewHolders = new SparseArray<>(); mContext = preferenceGroup.getContext(); mHomepageActivity = homepageActivity;