diff --git a/res/drawable/homepage_highlighted_item_background_v2.xml b/res/drawable/homepage_highlighted_item_background_v2.xml deleted file mode 100644 index 7aa489527a0..00000000000 --- a/res/drawable/homepage_highlighted_item_background_v2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - \ 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 deleted file mode 100644 index d2f79ff9bf6..00000000000 --- a/res/drawable/homepage_selectable_item_background_v2.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - diff --git a/src/com/android/settings/core/RoundCornerPreferenceAdapter.java b/src/com/android/settings/core/RoundCornerPreferenceAdapter.java index e5f3763a641..dcafad6cf6f 100644 --- a/src/com/android/settings/core/RoundCornerPreferenceAdapter.java +++ b/src/com/android/settings/core/RoundCornerPreferenceAdapter.java @@ -20,6 +20,7 @@ import android.os.Handler; import android.os.Looper; import android.view.View; +import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; @@ -27,6 +28,7 @@ import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceGroupAdapter; import androidx.preference.PreferenceViewHolder; +import com.android.settings.flags.Flags; import com.android.settingslib.widget.theme.R; import java.util.ArrayList; @@ -68,14 +70,47 @@ public class RoundCornerPreferenceAdapter extends PreferenceGroupAdapter { @Override public void onBindViewHolder(@NonNull PreferenceViewHolder holder, int position) { super.onBindViewHolder(holder, position); - updateBackground(holder, position); + if (Flags.homepageRevamp()) { + updateBackground(holder, position); + } + } + + protected @DrawableRes int getRoundCornerDrawableRes(int position, boolean isSelected) { + int CornerType = mRoundCornerMappingList.get(position); + + if ((CornerType & ROUND_CORNER_CENTER) == 0) { + return 0; + } + + if (((CornerType & ROUND_CORNER_TOP) != 0) && ((CornerType & ROUND_CORNER_BOTTOM) == 0)) { + // the first + return isSelected ? R.drawable.settingslib_round_background_top_selected + : R.drawable.settingslib_round_background_top; + } else if (((CornerType & ROUND_CORNER_BOTTOM) != 0) + && ((CornerType & ROUND_CORNER_TOP) == 0)) { + // the last + return isSelected ? R.drawable.settingslib_round_background_bottom_selected + : R.drawable.settingslib_round_background_bottom; + } else if (((CornerType & ROUND_CORNER_TOP) != 0) + && ((CornerType & ROUND_CORNER_BOTTOM) != 0)) { + // the only one preference + return isSelected ? R.drawable.settingslib_round_background_selected + : R.drawable.settingslib_round_background; + } else { + // in the center + return isSelected ? R.drawable.settingslib_round_background_center_selected + : R.drawable.settingslib_round_background_center; + } } @SuppressWarnings("WeakerAccess") /* synthetic access */ private void updatePreferences() { - mRoundCornerMappingList = new ArrayList<>(); - mappingPreferenceGroup(mRoundCornerMappingList, mPreferenceGroup); + if (Flags.homepageRevamp()) { + mRoundCornerMappingList = new ArrayList<>(); + mappingPreferenceGroup(mRoundCornerMappingList, mPreferenceGroup); + } } + private void mappingPreferenceGroup(List visibleList, PreferenceGroup group) { int groupSize = group.getPreferenceCount(); int firstVisible = 0; @@ -125,27 +160,9 @@ public class RoundCornerPreferenceAdapter extends PreferenceGroupAdapter { /** handle roundCorner background */ private void updateBackground(PreferenceViewHolder holder, int position) { - int CornerType = mRoundCornerMappingList.get(position); - - if ((CornerType & ROUND_CORNER_CENTER) == 0) { - return; - } + @DrawableRes int backgroundRes = getRoundCornerDrawableRes(position, false /* isSelected*/); 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); - } + v.setBackgroundResource(backgroundRes); } } diff --git a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java index 4ba12056630..9ddec5cb0c5 100644 --- a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java +++ b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java @@ -25,35 +25,32 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.DrawableRes; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceGroup; -import androidx.preference.PreferenceGroupAdapter; import androidx.preference.PreferenceViewHolder; import androidx.recyclerview.widget.RecyclerView; import androidx.window.embedding.ActivityEmbeddingController; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.core.RoundCornerPreferenceAdapter; import com.android.settings.flags.Flags; import com.android.settings.homepage.SettingsHomepageActivity; /** * Adapter for highlighting top level preferences */ -public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapter implements +public class HighlightableTopLevelPreferenceAdapter extends RoundCornerPreferenceAdapter implements SettingsHomepageActivity.HomepageLoadedListener { private static final String TAG = "HighlightableTopLevelAdapter"; static final long DELAY_HIGHLIGHT_DURATION_MILLIS = 100L; private static final int RES_NORMAL_BACKGROUND = - Flags.homepageRevamp() - ? R.drawable.homepage_selectable_item_background_v2 - : R.drawable.homepage_selectable_item_background; + R.drawable.homepage_selectable_item_background; private static final int RES_HIGHLIGHTED_BACKGROUND = - Flags.homepageRevamp() - ? R.drawable.homepage_highlighted_item_background_v2 - : R.drawable.homepage_highlighted_item_background; + R.drawable.homepage_highlighted_item_background; private final int mTitleColorNormal; private final int mTitleColorHighlight; @@ -101,7 +98,7 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt @VisibleForTesting void updateBackground(PreferenceViewHolder holder, int position) { if (!isHighlightNeeded()) { - removeHighlightBackground(holder); + removeHighlightBackground(holder, position); return; } @@ -109,9 +106,9 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt && mHighlightKey != null && TextUtils.equals(mHighlightKey, getItem(position).getKey())) { // This position should be highlighted. - addHighlightBackground(holder); + addHighlightBackground(holder, position); } else { - removeHighlightBackground(holder); + removeHighlightBackground(holder, position); } } @@ -226,31 +223,41 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt // De-highlight the existing preference view holder at an early stage final PreferenceViewHolder holder = mViewHolders.get(position); if (holder != null) { - removeHighlightBackground(holder); + removeHighlightBackground(holder, position); } notifyItemChanged(position); } } - private void addHighlightBackground(PreferenceViewHolder holder) { + private void addHighlightBackground(PreferenceViewHolder holder, int position) { final View v = holder.itemView; - v.setBackgroundResource(RES_HIGHLIGHTED_BACKGROUND); - ((TextView) v.findViewById(android.R.id.title)).setTextColor(mTitleColorHighlight); - ((TextView) v.findViewById(android.R.id.summary)).setTextColor(mSummaryColorHighlight); - final Drawable drawable = ((ImageView) v.findViewById(android.R.id.icon)).getDrawable(); - if (drawable != null) { - drawable.setTint(mIconColorHighlight); + if (Flags.homepageRevamp()) { + @DrawableRes int bgRes = getRoundCornerDrawableRes(position, true /*isSelected*/); + v.setBackgroundResource(bgRes); + } else { + v.setBackgroundResource(RES_HIGHLIGHTED_BACKGROUND); + ((TextView) v.findViewById(android.R.id.title)).setTextColor(mTitleColorHighlight); + ((TextView) v.findViewById(android.R.id.summary)).setTextColor(mSummaryColorHighlight); + final Drawable drawable = ((ImageView) v.findViewById(android.R.id.icon)).getDrawable(); + if (drawable != null) { + drawable.setTint(mIconColorHighlight); + } } } - private void removeHighlightBackground(PreferenceViewHolder holder) { + private void removeHighlightBackground(PreferenceViewHolder holder, int position) { final View v = holder.itemView; - v.setBackgroundResource(RES_NORMAL_BACKGROUND); - ((TextView) v.findViewById(android.R.id.title)).setTextColor(mTitleColorNormal); - ((TextView) v.findViewById(android.R.id.summary)).setTextColor(mSummaryColorNormal); - final Drawable drawable = ((ImageView) v.findViewById(android.R.id.icon)).getDrawable(); - if (drawable != null) { - drawable.setTint(mIconColorNormal); + if (Flags.homepageRevamp()) { + @DrawableRes int bgRes = getRoundCornerDrawableRes(position, false /*isSelected*/); + v.setBackgroundResource(bgRes); + } else { + v.setBackgroundResource(RES_NORMAL_BACKGROUND); + ((TextView) v.findViewById(android.R.id.title)).setTextColor(mTitleColorNormal); + ((TextView) v.findViewById(android.R.id.summary)).setTextColor(mSummaryColorNormal); + final Drawable drawable = ((ImageView) v.findViewById(android.R.id.icon)).getDrawable(); + if (drawable != null) { + drawable.setTint(mIconColorNormal); + } } }