diff --git a/res/drawable-sw600dp/ic_settings_about_device_filled.xml b/res/drawable-sw600dp/ic_settings_about_device_filled.xml new file mode 100644 index 00000000000..33ec5fe3f79 --- /dev/null +++ b/res/drawable-sw600dp/ic_settings_about_device_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/homepage_highlighted_item_background_v2.xml b/res/drawable/homepage_highlighted_item_background_v2.xml new file mode 100644 index 00000000000..7aa489527a0 --- /dev/null +++ b/res/drawable/homepage_highlighted_item_background_v2.xml @@ -0,0 +1,29 @@ + + + + + + + + + + \ No newline at end of file diff --git a/res/drawable/homepage_selectable_item_background_v2.xml b/res/drawable/homepage_selectable_item_background_v2.xml new file mode 100644 index 00000000000..d2f79ff9bf6 --- /dev/null +++ b/res/drawable/homepage_selectable_item_background_v2.xml @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/res/drawable/ic_apps_filled.xml b/res/drawable/ic_apps_filled.xml new file mode 100644 index 00000000000..5f86a92e013 --- /dev/null +++ b/res/drawable/ic_apps_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_devices_other_filled.xml b/res/drawable/ic_devices_other_filled.xml new file mode 100644 index 00000000000..a2ded48c57f --- /dev/null +++ b/res/drawable/ic_devices_other_filled.xml @@ -0,0 +1,28 @@ + + + + + + \ No newline at end of file diff --git a/res/drawable/ic_help_filled.xml b/res/drawable/ic_help_filled.xml new file mode 100644 index 00000000000..79cbb0b131f --- /dev/null +++ b/res/drawable/ic_help_filled.xml @@ -0,0 +1,26 @@ + + + + diff --git a/res/drawable/ic_notifications_filled.xml b/res/drawable/ic_notifications_filled.xml new file mode 100644 index 00000000000..3f539132f22 --- /dev/null +++ b/res/drawable/ic_notifications_filled.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/res/drawable/ic_settings_about_device_filled.xml b/res/drawable/ic_settings_about_device_filled.xml new file mode 100644 index 00000000000..fb6b2be5884 --- /dev/null +++ b/res/drawable/ic_settings_about_device_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_accessibility_filled.xml b/res/drawable/ic_settings_accessibility_filled.xml new file mode 100644 index 00000000000..24a5304be8f --- /dev/null +++ b/res/drawable/ic_settings_accessibility_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_battery_filled.xml b/res/drawable/ic_settings_battery_filled.xml new file mode 100644 index 00000000000..122fb0a40f8 --- /dev/null +++ b/res/drawable/ic_settings_battery_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_display_filled.xml b/res/drawable/ic_settings_display_filled.xml new file mode 100644 index 00000000000..ef61cbbb3d2 --- /dev/null +++ b/res/drawable/ic_settings_display_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_emergency_filled.xml b/res/drawable/ic_settings_emergency_filled.xml new file mode 100644 index 00000000000..af58127fac3 --- /dev/null +++ b/res/drawable/ic_settings_emergency_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_location_filled.xml b/res/drawable/ic_settings_location_filled.xml new file mode 100644 index 00000000000..264952122ad --- /dev/null +++ b/res/drawable/ic_settings_location_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_passwords_filled.xml b/res/drawable/ic_settings_passwords_filled.xml new file mode 100644 index 00000000000..eee77afbf21 --- /dev/null +++ b/res/drawable/ic_settings_passwords_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_privacy_filled.xml b/res/drawable/ic_settings_privacy_filled.xml new file mode 100644 index 00000000000..95127351a72 --- /dev/null +++ b/res/drawable/ic_settings_privacy_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_safety_center_filled.xml b/res/drawable/ic_settings_safety_center_filled.xml new file mode 100644 index 00000000000..8b6bb6c314a --- /dev/null +++ b/res/drawable/ic_settings_safety_center_filled.xml @@ -0,0 +1,29 @@ + + + + + + + diff --git a/res/drawable/ic_settings_security_filled.xml b/res/drawable/ic_settings_security_filled.xml new file mode 100644 index 00000000000..fa2a42b6192 --- /dev/null +++ b/res/drawable/ic_settings_security_filled.xml @@ -0,0 +1,25 @@ + + + + \ No newline at end of file diff --git a/res/drawable/ic_settings_system_dashboard_filled.xml b/res/drawable/ic_settings_system_dashboard_filled.xml new file mode 100644 index 00000000000..aa2756ebaa0 --- /dev/null +++ b/res/drawable/ic_settings_system_dashboard_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_wallpaper_filled.xml b/res/drawable/ic_settings_wallpaper_filled.xml new file mode 100644 index 00000000000..cbcc3b2d5f6 --- /dev/null +++ b/res/drawable/ic_settings_wallpaper_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_settings_wireless_filled.xml b/res/drawable/ic_settings_wireless_filled.xml new file mode 100644 index 00000000000..ec85a8b8146 --- /dev/null +++ b/res/drawable/ic_settings_wireless_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_storage_filled.xml b/res/drawable/ic_storage_filled.xml new file mode 100644 index 00000000000..2fa3c74a2a9 --- /dev/null +++ b/res/drawable/ic_storage_filled.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/drawable/ic_volume_up_filled.xml b/res/drawable/ic_volume_up_filled.xml new file mode 100644 index 00000000000..da3a867c501 --- /dev/null +++ b/res/drawable/ic_volume_up_filled.xml @@ -0,0 +1,26 @@ + + + + diff --git a/res/layout/homepage_preference_v2.xml b/res/layout/homepage_preference_v2.xml new file mode 100644 index 00000000000..4d441d36842 --- /dev/null +++ b/res/layout/homepage_preference_v2.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + diff --git a/res/layout/search_bar_unified_version.xml b/res/layout/search_bar_unified_version.xml new file mode 100644 index 00000000000..eec8406af7d --- /dev/null +++ b/res/layout/search_bar_unified_version.xml @@ -0,0 +1,44 @@ + + + + + + + + diff --git a/res/layout/settings_homepage_app_bar_unified_layout.xml b/res/layout/settings_homepage_app_bar_unified_layout.xml new file mode 100644 index 00000000000..3e254186822 --- /dev/null +++ b/res/layout/settings_homepage_app_bar_unified_layout.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/res/layout/settings_homepage_container_v2.xml b/res/layout/settings_homepage_container_v2.xml new file mode 100644 index 00000000000..73b8f21cebf --- /dev/null +++ b/res/layout/settings_homepage_container_v2.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/res/values/config.xml b/res/values/config.xml index 6d9d784cb84..4d3a23348e4 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -257,7 +257,7 @@ true - true + false false diff --git a/res/xml/top_level_settings_v2.xml b/res/xml/top_level_settings_v2.xml new file mode 100644 index 00000000000..9cd8dbe1d70 --- /dev/null +++ b/res/xml/top_level_settings_v2.xml @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/com/android/settings/core/RoundCornerPreferenceAdapter.java b/src/com/android/settings/core/RoundCornerPreferenceAdapter.java new file mode 100644 index 00000000000..e5f3763a641 --- /dev/null +++ b/src/com/android/settings/core/RoundCornerPreferenceAdapter.java @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.core; + +import android.os.Handler; +import android.os.Looper; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceGroup; +import androidx.preference.PreferenceGroupAdapter; +import androidx.preference.PreferenceViewHolder; + +import com.android.settingslib.widget.theme.R; + +import java.util.ArrayList; +import java.util.List; + +public class RoundCornerPreferenceAdapter extends PreferenceGroupAdapter { + + private static final int ROUND_CORNER_CENTER = 1; + private static final int ROUND_CORNER_TOP = 1 << 1; + private static final int ROUND_CORNER_BOTTOM = 1 << 2; + + private final PreferenceGroup mPreferenceGroup; + + private List mRoundCornerMappingList; + + private final Handler mHandler; + + private final Runnable mSyncRunnable = new Runnable() { + @Override + public void run() { + updatePreferences(); + } + }; + + public RoundCornerPreferenceAdapter(@NonNull PreferenceGroup preferenceGroup) { + super(preferenceGroup); + mPreferenceGroup = preferenceGroup; + mHandler = new Handler(Looper.getMainLooper()); + updatePreferences(); + } + + @Override + public void onPreferenceHierarchyChange(@NonNull Preference preference) { + super.onPreferenceHierarchyChange(preference); + mHandler.removeCallbacks(mSyncRunnable); + mHandler.post(mSyncRunnable); + } + + @Override + public void onBindViewHolder(@NonNull PreferenceViewHolder holder, int position) { + super.onBindViewHolder(holder, position); + updateBackground(holder, position); + } + + @SuppressWarnings("WeakerAccess") /* synthetic access */ + private void updatePreferences() { + mRoundCornerMappingList = new ArrayList<>(); + mappingPreferenceGroup(mRoundCornerMappingList, mPreferenceGroup); + } + private void mappingPreferenceGroup(List visibleList, PreferenceGroup group) { + int groupSize = group.getPreferenceCount(); + int firstVisible = 0; + int lastVisible = 0; + for (int i = 0; i < groupSize; i++) { + Preference pref = group.getPreference(i); + if (!pref.isVisible()) { + continue; + } + + //the first visible preference. + Preference firstVisiblePref = group.getPreference(firstVisible); + if (!firstVisiblePref.isVisible()) { + firstVisible = i; + } + + int value = 0; + if (group instanceof PreferenceCategory) { + if (pref instanceof PreferenceCategory) { + visibleList.add(value); + mappingPreferenceGroup(visibleList, (PreferenceCategory) pref); + } else { + if (i == firstVisible) { + value |= ROUND_CORNER_TOP; + } + + value |= ROUND_CORNER_BOTTOM; + if (i > lastVisible) { + // the last + int lastIndex = visibleList.size() - 1; + int newValue = visibleList.get(lastIndex) & ~ROUND_CORNER_BOTTOM; + visibleList.set(lastIndex, newValue); + lastVisible = i; + } + + value |= ROUND_CORNER_CENTER; + visibleList.add(value); + } + } else { + visibleList.add(value); + if (pref instanceof PreferenceCategory) { + mappingPreferenceGroup(visibleList, (PreferenceCategory) pref); + } + } + } + } + + /** handle roundCorner background */ + private void updateBackground(PreferenceViewHolder holder, int position) { + int CornerType = mRoundCornerMappingList.get(position); + + if ((CornerType & ROUND_CORNER_CENTER) == 0) { + return; + } + + View v = holder.itemView; + if (((CornerType & ROUND_CORNER_TOP) != 0) && ((CornerType & ROUND_CORNER_BOTTOM) == 0)) { + // the first + v.setBackgroundResource(R.drawable.settingslib_round_background_top); + } else if (((CornerType & ROUND_CORNER_BOTTOM) != 0) + && ((CornerType & ROUND_CORNER_TOP) == 0)) { + // the last + v.setBackgroundResource(R.drawable.settingslib_round_background_bottom); + } else if (((CornerType & ROUND_CORNER_TOP) != 0) + && ((CornerType & ROUND_CORNER_BOTTOM) != 0)) { + // the only one preference + v.setBackgroundResource(R.drawable.settingslib_round_background); + } else { + // in the center + v.setBackgroundResource(R.drawable.settingslib_round_background_center); + } + } +} diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java index b95d927414a..ffc97dc722c 100644 --- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java @@ -444,7 +444,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } if (TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) { iconDrawable.setTint(Utils.getHomepageIconColor(preference.getContext())); - } else if (forceRoundedIcon && !TextUtils.equals(mContext.getPackageName(), iconPackage)) { + } + + if (forceRoundedIcon && !TextUtils.equals(mContext.getPackageName(), iconPackage)) { iconDrawable = new AdaptiveIcon(mContext, iconDrawable, R.dimen.dashboard_tile_foreground_image_inset); ((AdaptiveIcon) iconDrawable).setBackgroundColor(mContext, tile); diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index 566136d887f..e2557ed54ce 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -73,6 +73,7 @@ import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.activityembedding.EmbeddedDeepLinkUtils; import com.android.settings.core.CategoryMixin; import com.android.settings.core.FeatureFlags; +import com.android.settings.flags.Flags; import com.android.settings.homepage.contextualcards.ContextualCardsFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.safetycenter.SafetyCenterManagerWrapper; @@ -160,8 +161,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements if (mAllowUpdateSuggestion) { Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion); mAllowUpdateSuggestion = false; - mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); - mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + if (Flags.homepageRevamp()) { + mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + } else { + mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE); + } } if (mHomepageView == null) { @@ -245,7 +250,10 @@ public class SettingsHomepageActivity extends FragmentActivity implements } setupEdgeToEdge(); - setContentView(R.layout.settings_homepage_container); + setContentView( + Flags.homepageRevamp() + ? R.layout.settings_homepage_container_v2 + : R.layout.settings_homepage_container); mIsTwoPane = ActivityEmbeddingUtils.isAlreadyEmbedded(this); @@ -397,19 +405,31 @@ public class SettingsHomepageActivity extends FragmentActivity implements } private void initSearchBarView() { - final Toolbar toolbar = findViewById(R.id.search_action_bar); - FeatureFactory.getFeatureFactory().getSearchFeatureProvider() - .initSearchToolbar(this /* activity */, toolbar, SettingsEnums.SETTINGS_HOMEPAGE); - - if (mIsEmbeddingActivityEnabled) { - final Toolbar toolbarTwoPaneVersion = findViewById(R.id.search_action_bar_two_pane); + if (Flags.homepageRevamp()) { + Toolbar toolbar = findViewById(R.id.search_action_bar_unified); FeatureFactory.getFeatureFactory().getSearchFeatureProvider() - .initSearchToolbar(this /* activity */, toolbarTwoPaneVersion, + .initSearchToolbar(this /* activity */, toolbar, SettingsEnums.SETTINGS_HOMEPAGE); + } else { + final Toolbar toolbar = findViewById(R.id.search_action_bar); + FeatureFactory.getFeatureFactory().getSearchFeatureProvider() + .initSearchToolbar(this /* activity */, toolbar, + SettingsEnums.SETTINGS_HOMEPAGE); + + if (mIsEmbeddingActivityEnabled) { + final Toolbar toolbarTwoPaneVersion = findViewById(R.id.search_action_bar_two_pane); + FeatureFactory.getFeatureFactory().getSearchFeatureProvider() + .initSearchToolbar(this /* activity */, toolbarTwoPaneVersion, + SettingsEnums.SETTINGS_HOMEPAGE); + } } } private void initAvatarView() { + if (Flags.homepageRevamp()) { + return; + } + final ImageView avatarView = findViewById(R.id.account_avatar); final ImageView avatarTwoPaneView = findViewById(R.id.account_avatar_two_pane_version); if (AvatarViewMixin.isAvatarSupported(this)) { @@ -458,8 +478,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements return; } - mSuggestionView = findViewById(R.id.suggestion_content); - mTwoPaneSuggestionView = findViewById(R.id.two_pane_suggestion_content); + if (Flags.homepageRevamp()) { + mSuggestionView = findViewById(R.id.unified_suggestion_content); + } else { + mSuggestionView = findViewById(R.id.suggestion_content); + mTwoPaneSuggestionView = findViewById(R.id.two_pane_suggestion_content); + } mHomepageView = findViewById(R.id.settings_homepage_container); // Hide the homepage for preparing the suggestion. If scrolling is needed, the list views // should be initialized in the invisible homepage view to prevent a scroll flicker. @@ -467,11 +491,16 @@ public class SettingsHomepageActivity extends FragmentActivity implements // Schedule a timer to show the homepage and hide the suggestion on timeout. mHomepageView.postDelayed(() -> showHomepageWithSuggestion(false), HOMEPAGE_LOADING_TIMEOUT_MS); - showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ false), - R.id.suggestion_content); - if (mIsEmbeddingActivityEnabled) { - showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ true), - R.id.two_pane_suggestion_content); + if (Flags.homepageRevamp()) { + showFragment(new SuggestionFragCreator(fragmentClass, true), + R.id.unified_suggestion_content); + } else { + showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ false), + R.id.suggestion_content); + if (mIsEmbeddingActivityEnabled) { + showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ true), + R.id.two_pane_suggestion_content); + } } } @@ -736,7 +765,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements } private void updateHomepageAppBar() { - if (!mIsEmbeddingActivityEnabled) { + if (Flags.homepageRevamp() || !mIsEmbeddingActivityEnabled) { return; } updateAppBarMinHeight(); @@ -752,7 +781,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements } private void updateHomepagePaddings() { - if (!mIsEmbeddingActivityEnabled) { + if (Flags.homepageRevamp() || !mIsEmbeddingActivityEnabled) { return; } if (mIsTwoPane) { @@ -766,6 +795,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements } private void updateAppBarMinHeight() { + if (Flags.homepageRevamp()) { + return; + } final int searchBarHeight = getResources().getDimensionPixelSize(R.dimen.search_bar_height); final int margin = getResources().getDimensionPixelSize( mIsEmbeddingActivityEnabled && mIsTwoPane diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java index d1fa7601322..66428611a5b 100644 --- a/src/com/android/settings/homepage/TopLevelSettings.java +++ b/src/com/android/settings/homepage/TopLevelSettings.java @@ -42,8 +42,10 @@ import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; +import com.android.settings.core.RoundCornerPreferenceAdapter; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; +import com.android.settings.flags.Flags; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.support.SupportPreferenceController; @@ -84,7 +86,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi @Override protected int getPreferenceScreenResId() { - return R.xml.top_level_settings; + return Flags.homepageRevamp() ? R.xml.top_level_settings_v2 : R.xml.top_level_settings; } @Override @@ -331,10 +333,14 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi @Override protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) { - if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) { - return super.onCreateAdapter(preferenceScreen); + if (mIsEmbeddingActivityEnabled && (getActivity() instanceof SettingsHomepageActivity)) { + return mHighlightMixin.onCreateAdapter(this, preferenceScreen, mScrollNeeded); } - return mHighlightMixin.onCreateAdapter(this, preferenceScreen, mScrollNeeded); + + if (Flags.homepageRevamp()) { + return new RoundCornerPreferenceAdapter(preferenceScreen); + } + return super.onCreateAdapter(preferenceScreen); } @Override @@ -376,7 +382,10 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi } public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = - new BaseSearchIndexProvider(R.xml.top_level_settings) { + new BaseSearchIndexProvider( + Flags.homepageRevamp() + ? R.xml.top_level_settings_v2 + : R.xml.top_level_settings) { @Override protected boolean isPageSearchEnabled(Context context) { diff --git a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java index 8084a4811d6..4ba12056630 100644 --- a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java +++ b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java @@ -34,6 +34,7 @@ import androidx.window.embedding.ActivityEmbeddingController; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.flags.Flags; import com.android.settings.homepage.SettingsHomepageActivity; /** @@ -46,9 +47,13 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt static final long DELAY_HIGHLIGHT_DURATION_MILLIS = 100L; private static final int RES_NORMAL_BACKGROUND = - R.drawable.homepage_selectable_item_background; + Flags.homepageRevamp() + ? R.drawable.homepage_selectable_item_background_v2 + : R.drawable.homepage_selectable_item_background; private static final int RES_HIGHLIGHTED_BACKGROUND = - R.drawable.homepage_highlighted_item_background; + Flags.homepageRevamp() + ? R.drawable.homepage_highlighted_item_background_v2 + : R.drawable.homepage_highlighted_item_background; private final int mTitleColorNormal; private final int mTitleColorHighlight; diff --git a/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java b/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java index 6242e23000c..2251180e5f6 100644 --- a/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java +++ b/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java @@ -22,6 +22,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; +import com.android.settings.flags.Flags; /** Helper for homepage preference to manage layout. */ public class HomepagePreferenceLayoutHelper { @@ -39,7 +40,10 @@ public class HomepagePreferenceLayoutHelper { } public HomepagePreferenceLayoutHelper(Preference preference) { - preference.setLayoutResource(R.layout.homepage_preference); + preference.setLayoutResource( + Flags.homepageRevamp() + ? R.layout.homepage_preference_v2 + : R.layout.homepage_preference); } /** Sets whether the icon should be visible */ diff --git a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java index 44f44aa8589..36c48e3cdd7 100644 --- a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java +++ b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java @@ -16,8 +16,6 @@ package com.android.settings.homepage; -import static com.google.common.truth.Truth.assertThat; - import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doReturn; @@ -59,11 +57,6 @@ public class TopLevelSettingsTest { mSettings.onAttach(mContext); } - @Test - public void shouldForceRoundedIcon_true() { - assertThat(mSettings.shouldForceRoundedIcon()).isTrue(); - } - @Test public void onCreatePreferences_shouldTintPreferenceIcon() { final Preference preference = new Preference(mContext);