diff --git a/res/layout/dream_preference_layout.xml b/res/layout/dream_preference_layout.xml index abb2a34d922..894ac32acba 100644 --- a/res/layout/dream_preference_layout.xml +++ b/res/layout/dream_preference_layout.xml @@ -64,36 +64,38 @@ app:layout_constraintStart_toStartOf="@+id/preview" app:layout_constraintEnd_toEndOf="@+id/preview"/> - - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintBottom_toTopOf="@id/summary_text"/> + + diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 78dbccee23e..5cd1ebb244e 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -445,10 +445,12 @@ 28dp 8dp 20dp - 18dp + 14sp + 16dp 8dp - 18dp - 10dp + 16sp + 18dp + 8dp 16dp 20dp 48dp diff --git a/src/com/android/settings/dream/DreamAdapter.java b/src/com/android/settings/dream/DreamAdapter.java index 4e16ccb2240..8e487d4da3e 100644 --- a/src/com/android/settings/dream/DreamAdapter.java +++ b/src/com/android/settings/dream/DreamAdapter.java @@ -19,6 +19,7 @@ package com.android.settings.dream; import android.content.Context; import android.graphics.drawable.Drawable; import android.graphics.drawable.VectorDrawable; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -45,8 +46,8 @@ public class DreamAdapter extends RecyclerView.Adapter * View holder for each {@link IDreamItem}. */ private class DreamViewHolder extends RecyclerView.ViewHolder { - private final ImageView mIconView; private final TextView mTitleView; + private final TextView mSummaryView; private final ImageView mPreviewView; private final ImageView mPreviewPlaceholderView; private final Button mCustomizeButton; @@ -57,8 +58,8 @@ public class DreamAdapter extends RecyclerView.Adapter mContext = context; mPreviewView = view.findViewById(R.id.preview); mPreviewPlaceholderView = view.findViewById(R.id.preview_placeholder); - mIconView = view.findViewById(R.id.icon); mTitleView = view.findViewById(R.id.title_text); + mSummaryView = view.findViewById(R.id.summary_text); mCustomizeButton = view.findViewById(R.id.customize_button); } @@ -68,6 +69,14 @@ public class DreamAdapter extends RecyclerView.Adapter public void bindView(IDreamItem item, int position) { mTitleView.setText(item.getTitle()); + final CharSequence summary = item.getSummary(); + if (TextUtils.isEmpty(summary)) { + mSummaryView.setVisibility(View.GONE); + } else { + mSummaryView.setText(summary); + mSummaryView.setVisibility(View.VISIBLE); + } + final Drawable previewImage = item.getPreviewImage(); if (previewImage != null) { mPreviewView.setImageDrawable(previewImage); @@ -82,7 +91,10 @@ public class DreamAdapter extends RecyclerView.Adapter icon.setTint(Utils.getColorAttrDefaultColor(mContext, com.android.internal.R.attr.colorAccentPrimaryVariant)); } - mIconView.setImageDrawable(icon); + final int iconSize = mContext.getResources().getDimensionPixelSize( + R.dimen.dream_item_icon_size); + icon.setBounds(0, 0, iconSize, iconSize); + mTitleView.setCompoundDrawablesRelative(icon, null, null, null); if (item.isActive()) { mLastSelectedPos = position; diff --git a/src/com/android/settings/dream/DreamPickerController.java b/src/com/android/settings/dream/DreamPickerController.java index b7ba6142413..af8c3645251 100644 --- a/src/com/android/settings/dream/DreamPickerController.java +++ b/src/com/android/settings/dream/DreamPickerController.java @@ -111,6 +111,11 @@ public class DreamPickerController extends BasePreferenceController { return mDreamInfo.caption; } + @Override + public CharSequence getSummary() { + return mDreamInfo.description; + } + @Override public Drawable getIcon() { return mDreamInfo.icon; diff --git a/src/com/android/settings/dream/IDreamItem.java b/src/com/android/settings/dream/IDreamItem.java index c462fe25502..49c82bec42a 100644 --- a/src/com/android/settings/dream/IDreamItem.java +++ b/src/com/android/settings/dream/IDreamItem.java @@ -18,23 +18,52 @@ package com.android.settings.dream; import android.graphics.drawable.Drawable; +import androidx.annotation.Nullable; + /** * Interface representing a dream item to be displayed. */ public interface IDreamItem { + /** + * Gets the title of this dream. + */ CharSequence getTitle(); + /** + * Gets the summary of this dream, or null if the dream doesn't provide one. + */ + @Nullable + CharSequence getSummary(); + + /** + * Gets the icon for the dream. + */ Drawable getIcon(); + /** + * Callback which can be implemented to handle clicks on this dream. + */ void onItemClicked(); + /** + * Callback which can be implemented to handle the customization of this dream. + */ default void onCustomizeClicked() { } + /** + * Gets the preview image of this dream. + */ Drawable getPreviewImage(); + /** + * Returns whether or not this dream is currently active. + */ boolean isActive(); + /** + * Returns whether to allow customization of this dream or not. + */ default boolean allowCustomization() { return false; }