Homepage UX revamp

- unified Search and Suggestion behavior between regular phone and two
  pane
- don't adjust padding
- update new icon drawable
- support group homepage preference with round corner on phone
- Remove avator from homepage
- Adjust homepage preference order

Bug: 333989622
Bug: 334130370
Test: visual
Change-Id: I9880b52553f164745766c8b9d5c996585285e52a
This commit is contained in:
Edgar Wang
2024-04-16 14:51:42 +00:00
parent 5ef0fe533e
commit 47400df7ae
35 changed files with 1284 additions and 36 deletions

View File

@@ -72,6 +72,7 @@ import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
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;
@@ -159,8 +160,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) {
@@ -244,7 +249,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);
@@ -396,19 +404,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)) {
@@ -457,8 +477,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.
@@ -466,11 +490,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);
}
}
}
@@ -735,7 +764,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
}
private void updateHomepageAppBar() {
if (!mIsEmbeddingActivityEnabled) {
if (Flags.homepageRevamp() || !mIsEmbeddingActivityEnabled) {
return;
}
updateAppBarMinHeight();
@@ -751,7 +780,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
}
private void updateHomepagePaddings() {
if (!mIsEmbeddingActivityEnabled) {
if (Flags.homepageRevamp() || !mIsEmbeddingActivityEnabled) {
return;
}
if (mIsTwoPane) {
@@ -765,6 +794,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