Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ android_library { "androidx.preference_preference", "androidx.recyclerview_recyclerview", "androidx.window_window", "androidx.window_window-java", "com.google.android.material_material", "setupcompat", "setupdesign", Loading src/com/android/settings/homepage/SettingsHomepageActivity.java +56 −9 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.widget.Toolbar; import androidx.annotation.VisibleForTesting; import androidx.core.graphics.Insets; import androidx.core.util.Consumer; import androidx.core.view.ViewCompat; import androidx.core.view.WindowCompat; import androidx.core.view.WindowInsetsCompat; Loading @@ -57,7 +58,10 @@ 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.SplitInfo; import androidx.window.embedding.SplitRule; import androidx.window.java.embedding.SplitControllerCallbackAdapter; import com.android.settings.R; import com.android.settings.Settings; Loading @@ -77,6 +81,7 @@ import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin; import com.google.android.setupcompat.util.WizardManagerHelper; import java.net.URISyntaxException; import java.util.List; import java.util.Set; /** Settings homepage activity */ Loading Loading @@ -112,6 +117,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements // A regular layout shows icons on homepage, whereas a simplified layout doesn't. private boolean mIsRegularLayout = true; private SplitControllerCallbackAdapter mSplitControllerAdapter; private SplitInfoCallback mCallback; /** A listener receiving homepage loaded events. */ public interface HomepageLoadedListener { /** Called when the homepage is loaded. */ Loading Loading @@ -259,6 +267,22 @@ public class SettingsHomepageActivity extends FragmentActivity implements protected void onStart() { ((SettingsApplication) getApplication()).setHomeActivity(this); super.onStart(); if (mIsEmbeddingActivityEnabled) { final SplitController splitController = SplitController.getInstance(this); mSplitControllerAdapter = new SplitControllerCallbackAdapter(splitController); mCallback = new SplitInfoCallback(this); mSplitControllerAdapter.addSplitListener(this, Runnable::run, mCallback); } } @Override protected void onStop() { super.onStop(); if (mSplitControllerAdapter != null && mCallback != null) { mSplitControllerAdapter.removeSplitListener(mCallback); mCallback = null; mSplitControllerAdapter = null; } } @Override Loading @@ -281,21 +305,13 @@ public class SettingsHomepageActivity extends FragmentActivity implements @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); final boolean newTwoPaneState = ActivityEmbeddingUtils.isAlreadyEmbedded(this); if (mIsTwoPane != newTwoPaneState) { mIsTwoPane = newTwoPaneState; updateHomepageAppBar(); updateHomepageBackground(); updateHomepagePaddings(); } updateSplitLayout(); updateHomepageUI(); } private void updateSplitLayout() { if (!mIsEmbeddingActivityEnabled) { return; } if (mIsTwoPane) { if (mIsRegularLayout == ActivityEmbeddingUtils.isRegularHomepageLayout(this)) { // Layout unchanged Loading Loading @@ -365,6 +381,17 @@ public class SettingsHomepageActivity extends FragmentActivity implements } } private void updateHomepageUI() { final boolean newTwoPaneState = ActivityEmbeddingUtils.isAlreadyEmbedded(this); if (mIsTwoPane != newTwoPaneState) { mIsTwoPane = newTwoPaneState; updateHomepageAppBar(); updateHomepageBackground(); updateHomepagePaddings(); } updateSplitLayout(); } private void updateHomepageBackground() { if (!mIsEmbeddingActivityEnabled) { return; Loading Loading @@ -733,4 +760,24 @@ public class SettingsHomepageActivity extends FragmentActivity implements } } } /** The callback invoked while AE splitting. */ private static class SplitInfoCallback implements Consumer<List<SplitInfo>> { private final SettingsHomepageActivity mActivity; private boolean mIsSplitUpdatedUI = false; SplitInfoCallback(SettingsHomepageActivity activity) { mActivity = activity; } @Override public void accept(List<SplitInfo> splitInfoList) { if (!splitInfoList.isEmpty() && !mIsSplitUpdatedUI && !mActivity.isFinishing() && ActivityEmbeddingUtils.isAlreadyEmbedded(mActivity)) { mIsSplitUpdatedUI = true; mActivity.updateHomepageUI(); } } } } Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,7 @@ android_library { "androidx.preference_preference", "androidx.recyclerview_recyclerview", "androidx.window_window", "androidx.window_window-java", "com.google.android.material_material", "setupcompat", "setupdesign", Loading
src/com/android/settings/homepage/SettingsHomepageActivity.java +56 −9 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.widget.Toolbar; import androidx.annotation.VisibleForTesting; import androidx.core.graphics.Insets; import androidx.core.util.Consumer; import androidx.core.view.ViewCompat; import androidx.core.view.WindowCompat; import androidx.core.view.WindowInsetsCompat; Loading @@ -57,7 +58,10 @@ 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.SplitInfo; import androidx.window.embedding.SplitRule; import androidx.window.java.embedding.SplitControllerCallbackAdapter; import com.android.settings.R; import com.android.settings.Settings; Loading @@ -77,6 +81,7 @@ import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin; import com.google.android.setupcompat.util.WizardManagerHelper; import java.net.URISyntaxException; import java.util.List; import java.util.Set; /** Settings homepage activity */ Loading Loading @@ -112,6 +117,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements // A regular layout shows icons on homepage, whereas a simplified layout doesn't. private boolean mIsRegularLayout = true; private SplitControllerCallbackAdapter mSplitControllerAdapter; private SplitInfoCallback mCallback; /** A listener receiving homepage loaded events. */ public interface HomepageLoadedListener { /** Called when the homepage is loaded. */ Loading Loading @@ -259,6 +267,22 @@ public class SettingsHomepageActivity extends FragmentActivity implements protected void onStart() { ((SettingsApplication) getApplication()).setHomeActivity(this); super.onStart(); if (mIsEmbeddingActivityEnabled) { final SplitController splitController = SplitController.getInstance(this); mSplitControllerAdapter = new SplitControllerCallbackAdapter(splitController); mCallback = new SplitInfoCallback(this); mSplitControllerAdapter.addSplitListener(this, Runnable::run, mCallback); } } @Override protected void onStop() { super.onStop(); if (mSplitControllerAdapter != null && mCallback != null) { mSplitControllerAdapter.removeSplitListener(mCallback); mCallback = null; mSplitControllerAdapter = null; } } @Override Loading @@ -281,21 +305,13 @@ public class SettingsHomepageActivity extends FragmentActivity implements @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); final boolean newTwoPaneState = ActivityEmbeddingUtils.isAlreadyEmbedded(this); if (mIsTwoPane != newTwoPaneState) { mIsTwoPane = newTwoPaneState; updateHomepageAppBar(); updateHomepageBackground(); updateHomepagePaddings(); } updateSplitLayout(); updateHomepageUI(); } private void updateSplitLayout() { if (!mIsEmbeddingActivityEnabled) { return; } if (mIsTwoPane) { if (mIsRegularLayout == ActivityEmbeddingUtils.isRegularHomepageLayout(this)) { // Layout unchanged Loading Loading @@ -365,6 +381,17 @@ public class SettingsHomepageActivity extends FragmentActivity implements } } private void updateHomepageUI() { final boolean newTwoPaneState = ActivityEmbeddingUtils.isAlreadyEmbedded(this); if (mIsTwoPane != newTwoPaneState) { mIsTwoPane = newTwoPaneState; updateHomepageAppBar(); updateHomepageBackground(); updateHomepagePaddings(); } updateSplitLayout(); } private void updateHomepageBackground() { if (!mIsEmbeddingActivityEnabled) { return; Loading Loading @@ -733,4 +760,24 @@ public class SettingsHomepageActivity extends FragmentActivity implements } } } /** The callback invoked while AE splitting. */ private static class SplitInfoCallback implements Consumer<List<SplitInfo>> { private final SettingsHomepageActivity mActivity; private boolean mIsSplitUpdatedUI = false; SplitInfoCallback(SettingsHomepageActivity activity) { mActivity = activity; } @Override public void accept(List<SplitInfo> splitInfoList) { if (!splitInfoList.isEmpty() && !mIsSplitUpdatedUI && !mActivity.isFinishing() && ActivityEmbeddingUtils.isAlreadyEmbedded(mActivity)) { mIsSplitUpdatedUI = true; mActivity.updateHomepageUI(); } } } }