Merge "Update suggestion UI"

This commit is contained in:
TreeHugger Robot
2018-02-02 21:23:24 +00:00
committed by Android (Google) Code Review
9 changed files with 26 additions and 15 deletions

View File

@@ -20,7 +20,7 @@
style="@style/SuggestionConditionStyle" style="@style/SuggestionConditionStyle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="12dp" android:paddingTop="10dp"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
@@ -55,8 +55,8 @@
android:id="@+id/suggestion_list" android:id="@+id/suggestion_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="14dp" android:paddingTop="12dp"
android:paddingBottom="16dp" android:paddingBottom="13dp"
android:scrollbars="none"/> android:scrollbars="none"/>
</LinearLayout> </LinearLayout>

View File

@@ -64,7 +64,7 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:layout_marginEnd="12dp" android:layout_marginEnd="12dp"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.SuggestionTitleV2" android:textAppearance="@style/TextAppearance.SuggestionTitle"
android:ellipsize="end" android:ellipsize="end"
android:fadingEdge="horizontal" /> android:fadingEdge="horizontal" />

View File

@@ -64,7 +64,7 @@
android:layout_marginStart="12dp" android:layout_marginStart="12dp"
android:layout_marginEnd="12dp" android:layout_marginEnd="12dp"
android:singleLine="true" android:singleLine="true"
android:textAppearance="@style/TextAppearance.SuggestionTitleV2" android:textAppearance="@style/TextAppearance.SuggestionTitle"
android:ellipsize="end" android:ellipsize="end"
android:fadingEdge="horizontal" /> android:fadingEdge="horizontal" />
@@ -84,6 +84,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:layout_marginBottom="18dp"
android:text="@string/suggestion_button_text" /> android:text="@string/suggestion_button_text" />
</LinearLayout> </LinearLayout>

View File

@@ -307,7 +307,7 @@
<dimen name="suggestion_card_width_one_card">332dp</dimen> <dimen name="suggestion_card_width_one_card">332dp</dimen>
<dimen name="suggestion_card_width_two_cards">162dp</dimen> <dimen name="suggestion_card_width_two_cards">162dp</dimen>
<dimen name="suggestion_card_width_multiple_cards">156dp</dimen> <dimen name="suggestion_card_width_multiple_cards">156dp</dimen>
<dimen name="suggestion_card_outer_margin">16dp</dimen> <dimen name="suggestion_card_outer_margin">14dp</dimen>
<dimen name="suggestion_card_inner_margin">12dp</dimen> <dimen name="suggestion_card_inner_margin">12dp</dimen>
<dimen name="suggestion_card_padding_bottom_one_card">16dp</dimen> <dimen name="suggestion_card_padding_bottom_one_card">16dp</dimen>
<dimen name="suggestion_card_corner_radius">2dp</dimen> <dimen name="suggestion_card_corner_radius">2dp</dimen>

View File

@@ -318,7 +318,6 @@
<style name="TextAppearance.SuggestionHeader" <style name="TextAppearance.SuggestionHeader"
parent="@android:style/TextAppearance.Material.Subhead"> parent="@android:style/TextAppearance.Material.Subhead">
<item name="android:fontFamily">@config/config_headlineFontFamilyMedium</item>
<item name="android:textSize">14sp</item> <item name="android:textSize">14sp</item>
<item name="android:textColor">?android:attr/colorAccent</item> <item name="android:textColor">?android:attr/colorAccent</item>
</style> </style>
@@ -334,12 +333,7 @@
<style name="TextAppearance.SuggestionTitle" <style name="TextAppearance.SuggestionTitle"
parent="@android:style/TextAppearance.Material.Subhead"> parent="@android:style/TextAppearance.Material.Subhead">
<item name="android:fontFamily">sans-serif-medium</item> <item name="android:textSize">16sp</item>
</style>
<style name="TextAppearance.SuggestionTitleV2"
parent="@android:style/TextAppearance.Material.Subhead">
<item name="android:fontFamily">@config/config_headlineFontFamily</item>
</style> </style>
<style name="TextAppearance.SuggestionSummary" parent="TextAppearance.Small"> <style name="TextAppearance.SuggestionSummary" parent="TextAppearance.Small">
@@ -474,7 +468,6 @@
<style name="TextAppearance.SearchBar" parent="@android:style/TextAppearance.Material.Widget.Toolbar.Subtitle"> <style name="TextAppearance.SearchBar" parent="@android:style/TextAppearance.Material.Widget.Toolbar.Subtitle">
<item name="android:textSize">@dimen/search_bar_text_size</item> <item name="android:textSize">@dimen/search_bar_text_size</item>
<item name="android:fontFamily">@config/config_headlineFontFamily</item>
</style> </style>
<style name="device_info_dialog_label"> <style name="device_info_dialog_label">

View File

@@ -17,6 +17,7 @@ package com.android.settings.dashboard;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
import android.os.Bundle; import android.os.Bundle;
@@ -303,8 +304,13 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
final List<Suggestion> suggestions = final List<Suggestion> suggestions =
(List<Suggestion>) mDashboardData.getItemEntityByPosition(position); (List<Suggestion>) mDashboardData.getItemEntityByPosition(position);
final int suggestionCount = suggestions.size(); final int suggestionCount = suggestions.size();
final Typeface fontMedium = Typeface.create(
mContext.getString(com.android.internal.R.string.config_headlineFontFamilyMedium),
Typeface.NORMAL);
holder.title.setTypeface(fontMedium);
if (suggestions != null && suggestionCount > 0) { if (suggestions != null && suggestionCount > 0) {
holder.summary.setText("" + suggestionCount); holder.summary.setText("" + suggestionCount);
holder.summary.setTypeface(fontMedium);
mSuggestionAdapter.setSuggestions(suggestions); mSuggestionAdapter.setSuggestions(suggestions);
holder.data.setAdapter(mSuggestionAdapter); holder.data.setAdapter(mSuggestionAdapter);
} }

View File

@@ -18,6 +18,7 @@ package com.android.settings.dashboard.suggestions;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
import android.os.Bundle; import android.os.Bundle;
@@ -122,6 +123,9 @@ public class SuggestionAdapter extends RecyclerView.Adapter<DashboardItemHolder>
holder.icon.setImageDrawable(drawable); holder.icon.setImageDrawable(drawable);
holder.title.setText(suggestion.getTitle()); holder.title.setText(suggestion.getTitle());
holder.title.setSingleLine(suggestionCount == 1); holder.title.setSingleLine(suggestionCount == 1);
holder.title.setTypeface(Typeface.create(
mContext.getString(com.android.internal.R.string.config_headlineFontFamilyMedium),
Typeface.NORMAL));
if (suggestionCount == 1) { if (suggestionCount == 1) {
final CharSequence summary = suggestion.getSummary(); final CharSequence summary = suggestion.getSummary();

View File

@@ -115,6 +115,7 @@ public class DashboardAdapterTest {
final View itemView = mock(View.class); final View itemView = mock(View.class);
when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data); when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class)); when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class));
when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
final DashboardAdapter.SuggestionContainerHolder holder = final DashboardAdapter.SuggestionContainerHolder holder =
new DashboardAdapter.SuggestionContainerHolder(itemView); new DashboardAdapter.SuggestionContainerHolder(itemView);
@@ -138,6 +139,7 @@ public class DashboardAdapterTest {
final View itemView = mock(View.class); final View itemView = mock(View.class);
when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data); when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class)); when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class));
when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
final DashboardAdapter.SuggestionContainerHolder holder = final DashboardAdapter.SuggestionContainerHolder holder =
new DashboardAdapter.SuggestionContainerHolder(itemView); new DashboardAdapter.SuggestionContainerHolder(itemView);
final List<Suggestion> suggestions = makeSuggestionsV2("pkg1", "pkg2", "pkg3", "pkg4"); final List<Suggestion> suggestions = makeSuggestionsV2("pkg1", "pkg2", "pkg3", "pkg4");
@@ -188,6 +190,7 @@ public class DashboardAdapterTest {
final View itemView = mock(View.class); final View itemView = mock(View.class);
when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data); when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class)); when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class));
when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
final DashboardAdapter.SuggestionContainerHolder holder = final DashboardAdapter.SuggestionContainerHolder holder =
new DashboardAdapter.SuggestionContainerHolder(itemView); new DashboardAdapter.SuggestionContainerHolder(itemView);
@@ -213,6 +216,7 @@ public class DashboardAdapterTest {
when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data); when(itemView.findViewById(R.id.suggestion_list)).thenReturn(data);
final TextView summary = mock(TextView.class); final TextView summary = mock(TextView.class);
when(itemView.findViewById(android.R.id.summary)).thenReturn(summary); when(itemView.findViewById(android.R.id.summary)).thenReturn(summary);
when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class));
final DashboardAdapter.SuggestionContainerHolder holder = final DashboardAdapter.SuggestionContainerHolder holder =
new DashboardAdapter.SuggestionContainerHolder(itemView); new DashboardAdapter.SuggestionContainerHolder(itemView);

View File

@@ -19,6 +19,7 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never; import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
@@ -76,7 +77,7 @@ public class SuggestionAdapterTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application; mContext = spy(RuntimeEnvironment.application);
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
final Suggestion suggestion1 = new Suggestion.Builder("id1") final Suggestion suggestion1 = new Suggestion.Builder("id1")
@@ -136,6 +137,7 @@ public class SuggestionAdapterTest {
mSuggestionAdapter = new SuggestionAdapter(mContext, mSuggestionControllerMixin, mSuggestionAdapter = new SuggestionAdapter(mContext, mSuggestionControllerMixin,
null /* savedInstanceState */, null /* callback */, null /* lifecycle */); null /* savedInstanceState */, null /* callback */, null /* lifecycle */);
mSuggestionAdapter.setSuggestions(mOneSuggestion); mSuggestionAdapter.setSuggestions(mOneSuggestion);
doReturn("sans").when(mContext).getString(anyInt());
// Bind twice // Bind twice
mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0); mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0);
@@ -177,6 +179,7 @@ public class SuggestionAdapterTest {
mSuggestionHolder = mSuggestionAdapter.onCreateViewHolder( mSuggestionHolder = mSuggestionAdapter.onCreateViewHolder(
new FrameLayout(RuntimeEnvironment.application), new FrameLayout(RuntimeEnvironment.application),
mSuggestionAdapter.getItemViewType(0)); mSuggestionAdapter.getItemViewType(0));
doReturn("sans").when(mContext).getString(anyInt());
mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0); mSuggestionAdapter.onBindViewHolder(mSuggestionHolder, 0);
mSuggestionHolder.itemView.findViewById(android.R.id.primary).performClick(); mSuggestionHolder.itemView.findViewById(android.R.id.primary).performClick();