diff --git a/libs/window_ext_lib.aar b/libs/window_ext_lib.aar index ca58b362099..d34afbda298 100644 Binary files a/libs/window_ext_lib.aar and b/libs/window_ext_lib.aar differ diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java index ac3a01df8cf..ab999ed8888 100644 --- a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java +++ b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java @@ -16,10 +16,7 @@ package com.android.settings.activityembedding; -import android.app.Activity; -import android.app.ActivityTaskManager; import android.content.Context; -import android.graphics.Rect; import android.util.DisplayMetrics; import android.util.FeatureFlagUtils; import android.util.Log; @@ -65,13 +62,4 @@ public class ActivityEmbeddingUtils { return isFlagEnabled && isSplitSupported; } - - /** Whether the screen meets two-pane resolution. */ - public static boolean isTwoPaneResolution(Activity activity) { - final Rect currentTaskBounds = - ActivityTaskManager.getInstance().getTaskBounds(activity.getTaskId()); - - return currentTaskBounds.width() >= getMinCurrentScreenSplitWidthPx(activity) - && currentTaskBounds.height() >= getMinSmallestScreenSplitWidthPx(activity); - } } diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index 183a2fbf5f5..c56d89b1a3a 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -42,6 +42,7 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import androidx.window.embedding.SplitController; import androidx.window.embedding.SplitRule; import com.android.settings.R; @@ -85,8 +86,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements private View mTwoPaneSuggestionView; private CategoryMixin mCategoryMixin; private Set mLoadedListeners; + private SplitController mSplitController; private boolean mIsEmbeddingActivityEnabled; - private boolean mIsTwoPaneLastTime; + private boolean mIsTwoPane; /** A listener receiving homepage loaded events. */ public interface HomepageLoadedListener { @@ -149,7 +151,8 @@ public class SettingsHomepageActivity extends FragmentActivity implements super.onCreate(savedInstanceState); setContentView(R.layout.settings_homepage_container); mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this); - mIsTwoPaneLastTime = ActivityEmbeddingUtils.isTwoPaneResolution(this); + mSplitController = SplitController.getInstance(); + mIsTwoPane = mSplitController.isActivityEmbedded(this); final View appBar = findViewById(R.id.app_bar_container); appBar.setMinimumHeight(getSearchBoxHeight()); @@ -213,9 +216,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - final boolean isTwoPane = ActivityEmbeddingUtils.isTwoPaneResolution(this); - if (mIsTwoPaneLastTime != isTwoPane) { - mIsTwoPaneLastTime = isTwoPane; + final boolean newTwoPaneState = mSplitController.isActivityEmbedded(this); + if (mIsTwoPane != newTwoPaneState) { + mIsTwoPane = newTwoPaneState; updateHomepageAppBar(); updateHomepageBackground(); } @@ -254,7 +257,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements } final Window window = getWindow(); - final int color = ActivityEmbeddingUtils.isTwoPaneResolution(this) + final int color = mIsTwoPane ? Utils.getColorAttrDefaultColor(this, com.android.internal.R.attr.colorSurface) : Utils.getColorAttrDefaultColor(this, android.R.attr.colorBackground); @@ -416,7 +419,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements if (!mIsEmbeddingActivityEnabled) { return; } - if (ActivityEmbeddingUtils.isTwoPaneResolution(this)) { + if (mIsTwoPane) { findViewById(R.id.homepage_app_bar_regular_phone_view).setVisibility(View.GONE); findViewById(R.id.homepage_app_bar_two_pane_view).setVisibility(View.VISIBLE); } else { diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java index f76a3de85d7..7ce673074ee 100644 --- a/src/com/android/settings/homepage/TopLevelSettings.java +++ b/src/com/android/settings/homepage/TopLevelSettings.java @@ -33,6 +33,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceScreen; import androidx.recyclerview.widget.RecyclerView; +import androidx.window.embedding.SplitController; import com.android.settings.R; import com.android.settings.Utils; @@ -144,7 +145,7 @@ public class TopLevelSettings extends DashboardFragment implements if (mFirstStarted) { mFirstStarted = false; } else if (mIsEmbeddingActivityEnabled && isOnlyOneActivityInTask() - && !ActivityEmbeddingUtils.isTwoPaneResolution(getActivity())) { + && !SplitController.getInstance().isActivityEmbedded(getActivity())) { // Set default highlight menu key for 1-pane homepage since it will show the placeholder // page once changing back to 2-pane. Log.i(TAG, "Set default menu key"); diff --git a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java index ff8f805b5e8..ddd57f3a76d 100644 --- a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java +++ b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java @@ -31,10 +31,10 @@ import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceGroupAdapter; import androidx.preference.PreferenceViewHolder; import androidx.recyclerview.widget.RecyclerView; +import androidx.window.embedding.SplitController; import com.android.settings.R; import com.android.settings.Utils; -import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.homepage.SettingsHomepageActivity; /** @@ -255,6 +255,6 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt } private boolean isHighlightNeeded() { - return ActivityEmbeddingUtils.isTwoPaneResolution(mHomepageActivity); + return SplitController.getInstance().isActivityEmbedded(mHomepageActivity); } }