diff options
| author | 2019-03-21 09:45:19 -0700 | |
|---|---|---|
| committer | 2019-03-27 11:51:35 +0800 | |
| commit | 648660552589a7935719570bc144f74b7517d0a4 (patch) | |
| tree | ff9ef0801ae6e1f6144d9006e771449fea638d53 | |
| parent | c58829cba9eab0f72bb72be702aa2761f4da4163 (diff) | |
Modify the bar chart for new graph design
- Allow passing a custom string as the label for each bar.
- Also allow passing a CharSequence as the bar summary instead of a
resource id.
- Change barchar style for new graph design. ex: color, font size,
margin size
Test: View graph.
Test: atest BarChartInfoTest BarChartPreferenceTest
Change-Id: I6f31ece4fe61811420cf2458219452862e8d04c2
7 files changed, 102 insertions, 67 deletions
diff --git a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml index 814246fc2698..9b3d1dfb6568 100644 --- a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml +++ b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_chart.xml @@ -20,8 +20,8 @@ xmlns:settings="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginEnd="16dp" + android:layout_marginStart="10dp" + android:layout_marginEnd="10dp" android:gravity="center" android:orientation="vertical"> @@ -47,19 +47,19 @@ <com.android.settingslib.widget.BarView android:id="@+id/bar_view1" style="@style/BarViewStyle" - settings:barColor="#FA7B17"/> + settings:barColor="#A142F4"/> <com.android.settingslib.widget.BarView android:id="@+id/bar_view2" style="@style/BarViewStyle" - settings:barColor="#F439A0"/> + settings:barColor="#24C1E0"/> <com.android.settingslib.widget.BarView android:id="@+id/bar_view3" style="@style/BarViewStyle" - settings:barColor="#A142F4"/> + settings:barColor="#4285F4"/> <com.android.settingslib.widget.BarView android:id="@+id/bar_view4" style="@style/BarViewStyle" - settings:barColor="#24C1E0"/> + settings:barColor="#009688"/> </LinearLayout> <Button diff --git a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml index 4bc68b333cc6..093c5debaab7 100644 --- a/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml +++ b/packages/SettingsLib/BarChartPreference/res/layout/settings_bar_view.xml @@ -32,15 +32,13 @@ android:layout_width="@dimen/settings_bar_view_icon_size" android:layout_height="@dimen/settings_bar_view_icon_size" android:scaleType="fitCenter" - android:layout_marginTop="12dp" - android:layout_marginBottom="12dp"/> + android:layout_marginTop="12dp"/> <TextView android:id="@+id/bar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:layout_marginBottom="2dp" + android:layout_marginTop="12dp" android:singleLine="true" android:ellipsize="marquee" android:textAppearance="@style/BarChart.Text.Title"/> @@ -49,6 +47,7 @@ android:id="@+id/bar_summary" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginTop="4dp" android:layout_marginBottom="12dp" android:singleLine="true" android:ellipsize="marquee" diff --git a/packages/SettingsLib/BarChartPreference/res/values/styles.xml b/packages/SettingsLib/BarChartPreference/res/values/styles.xml index 558792855628..094f8aa79ba3 100644 --- a/packages/SettingsLib/BarChartPreference/res/values/styles.xml +++ b/packages/SettingsLib/BarChartPreference/res/values/styles.xml @@ -35,12 +35,12 @@ </style> <style name="BarChart.Text.Title"> - <item name="android:textSize">22sp</item> + <item name="android:textSize">14sp</item> </style> <style name="BarChart.Text.Summary" - parent="@android:style/TextAppearance.Material.Body1"> + parent="@*android:style/TextAppearance.DeviceDefault.Body1"> <item name="android:textColor">?android:attr/textColorSecondary</item> - <item name="android:textSize">14sp</item> + <item name="android:textSize">12sp</item> </style> </resources>
\ No newline at end of file diff --git a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java index 03dfd3ee6080..fccb7196b12f 100644 --- a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java +++ b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java @@ -71,8 +71,7 @@ public class BarView extends LinearLayout { //Set height of bar view mBarView.getLayoutParams().height = barViewInfo.getNormalizedHeight(); mIcon.setImageDrawable(barViewInfo.getIcon()); - // For now, we use the bar number as title. - mBarTitle.setText(Integer.toString(barViewInfo.getHeight())); + mBarTitle.setText(barViewInfo.getTitle()); mBarSummary.setText(barViewInfo.getSummary()); mIcon.setContentDescription(barViewInfo.getContentDescription()); } diff --git a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java index 1ef36a2a75b7..922337a92f18 100644 --- a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java +++ b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java @@ -21,7 +21,6 @@ import android.view.View; import androidx.annotation.IntRange; import androidx.annotation.Nullable; -import androidx.annotation.StringRes; import java.util.Comparator; @@ -32,8 +31,8 @@ public class BarViewInfo implements Comparable<BarViewInfo> { private final Drawable mIcon; private View.OnClickListener mClickListener; - @StringRes - private int mSummary; + private CharSequence mTitle; + private CharSequence mSummary; private @Nullable CharSequence mContentDescription; // A number indicates this bar's height. The larger number shows a higher bar view. private int mHeight; @@ -45,13 +44,16 @@ public class BarViewInfo implements Comparable<BarViewInfo> { * * @param icon The icon of bar view. * @param barHeight The height of bar view. Larger number shows a higher bar view. - * @param summary The string resource id for summary. + * @param title The string for title. If this is null, use the height of the bar. + * @param summary The string for summary. * @param contentDescription Optional text that briefly describes the contents of the icon. */ - public BarViewInfo(Drawable icon, @IntRange(from = 0) int barHeight, @StringRes int summary, + public BarViewInfo(Drawable icon, @IntRange(from = 0) int barHeight, + @Nullable CharSequence title, CharSequence summary, @Nullable CharSequence contentDescription) { mIcon = icon; mHeight = barHeight; + mTitle = title; mSummary = summary; mContentDescription = contentDescription; } @@ -74,8 +76,12 @@ public class BarViewInfo implements Comparable<BarViewInfo> { mHeight = height; } - void setSummary(@StringRes int resId) { - mSummary = resId; + void setTitle(CharSequence title) { + mTitle = title; + } + + void setSummary(CharSequence summary) { + mSummary = summary; } Drawable getIcon() { @@ -90,8 +96,12 @@ public class BarViewInfo implements Comparable<BarViewInfo> { return mClickListener; } - @StringRes - int getSummary() { + @Nullable + CharSequence getTitle() { + return mTitle; + } + + CharSequence getSummary() { return mSummary; } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java index 2b272485dff3..7faac7a90664 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java @@ -39,6 +39,8 @@ public class BarChartInfoTest { private final int mDetails = 0x22222222; @StringRes private final int mEmptyText = 0x33333333; + private final CharSequence mTitleStr = "title"; + private final CharSequence mSummaryStr = "summary"; private final View.OnClickListener mClickListener = v -> { }; @@ -72,7 +74,8 @@ public class BarChartInfoTest { final BarViewInfo barViewInfo = new BarViewInfo( null /* icon */, 50, - mTitle, + mTitleStr, + mSummaryStr, null); final BarChartInfo mBarChartInfo = new BarChartInfo.Builder() @@ -92,7 +95,8 @@ public class BarChartInfoTest { final BarViewInfo barViewInfo = new BarViewInfo( null /* icon */, 50, - mTitle, + mTitleStr, + mSummaryStr, null); final BarChartInfo mBarChartInfo = new BarChartInfo.Builder() .setTitle(mTitle) @@ -115,7 +119,8 @@ public class BarChartInfoTest { final BarViewInfo barViewInfo = new BarViewInfo( null /* icon */, 50, - mTitle, + mTitleStr, + mSummaryStr, null); new BarChartInfo.Builder() .setTitle(mTitle) diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java index 266554be57d3..567d90fa8916 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java @@ -39,6 +39,8 @@ public class BarChartPreferenceTest { @Rule public final ExpectedException thrown = ExpectedException.none(); + private final CharSequence mTitleStr = "title"; + private final CharSequence mSummaryStr = "summary"; private Context mContext; private View mBarChartView; @@ -114,7 +116,9 @@ public class BarChartPreferenceTest { .setTitle(R.string.debug_app) .setDetails(R.string.debug_app) .addBarViewInfo( - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null)) + new BarViewInfo(mIcon, 10, null /* title */, + mContext.getText(R.string.debug_app) /* summary */, + null /* contentDescription */)) .build(); mPreference.initializeBarChart(barChartInfo); @@ -130,7 +134,9 @@ public class BarChartPreferenceTest { final BarChartInfo barChartInfo = new BarChartInfo.Builder() .setTitle(R.string.debug_app) .addBarViewInfo( - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null)) + new BarViewInfo(mIcon, 10, null /* title */, + mContext.getText(R.string.debug_app) /* summary */, + null /* contentDescription */)) .build(); mPreference.initializeBarChart(barChartInfo); @@ -147,7 +153,9 @@ public class BarChartPreferenceTest { .setDetailsOnClickListener(v -> { }) .addBarViewInfo( - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null)) + new BarViewInfo(mIcon, 10, null /* title */, + mContext.getText(R.string.debug_app) /* summary */, + null /* contentDescription */)) .build(); mPreference.initializeBarChart(barChartInfo); @@ -160,7 +168,7 @@ public class BarChartPreferenceTest { @Test public void setBarViewInfos_oneBarViewInfoSet_shouldShowOneBarView() { final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null) + new BarViewInfo(mIcon, 10, mTitleStr, mSummaryStr, null /* contentDescription */) }; mPreference.initializeBarChart(mBarChartInfo); @@ -168,7 +176,7 @@ public class BarChartPreferenceTest { mPreference.onBindViewHolder(mHolder); assertThat(mBarView1.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView1.getTitle()).isEqualTo("10"); + assertThat(mBarView1.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView2.getVisibility()).isEqualTo(View.GONE); assertThat(mBarView3.getVisibility()).isEqualTo(View.GONE); @@ -178,8 +186,8 @@ public class BarChartPreferenceTest { @Test public void setBarViewInfos_twoBarViewInfosSet_shouldShowTwoBarViews() { final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ - new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null) + new BarViewInfo(mIcon, 20, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 10, mTitleStr, mSummaryStr, null /* contentDescription */), }; mPreference.initializeBarChart(mBarChartInfo); @@ -187,9 +195,9 @@ public class BarChartPreferenceTest { mPreference.onBindViewHolder(mHolder); assertThat(mBarView1.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView1.getTitle()).isEqualTo("20"); + assertThat(mBarView1.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView2.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView2.getTitle()).isEqualTo("10"); + assertThat(mBarView2.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView3.getVisibility()).isEqualTo(View.GONE); assertThat(mBarView4.getVisibility()).isEqualTo(View.GONE); @@ -198,9 +206,9 @@ public class BarChartPreferenceTest { @Test public void setBarViewInfos_threeBarViewInfosSet_shouldShowThreeBarViews() { final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ - new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null) + new BarViewInfo(mIcon, 20, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 10, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 5, mTitleStr, mSummaryStr, null /* contentDescription */) }; mPreference.initializeBarChart(mBarChartInfo); @@ -208,11 +216,11 @@ public class BarChartPreferenceTest { mPreference.onBindViewHolder(mHolder); assertThat(mBarView1.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView1.getTitle()).isEqualTo("20"); + assertThat(mBarView1.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView2.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView2.getTitle()).isEqualTo("10"); + assertThat(mBarView2.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView3.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView3.getTitle()).isEqualTo("5"); + assertThat(mBarView3.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView4.getVisibility()).isEqualTo(View.GONE); } @@ -220,10 +228,10 @@ public class BarChartPreferenceTest { @Test public void setBarViewInfos_fourBarViewInfosSet_shouldShowFourBarViews() { final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ - new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 2 /* barNumber */, R.string.debug_app, null), + new BarViewInfo(mIcon, 20, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 10, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 5, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 2, mTitleStr, mSummaryStr, null /* contentDescription */) }; mPreference.initializeBarChart(mBarChartInfo); @@ -231,13 +239,13 @@ public class BarChartPreferenceTest { mPreference.onBindViewHolder(mHolder); assertThat(mBarView1.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView1.getTitle()).isEqualTo("20"); + assertThat(mBarView1.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView2.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView2.getTitle()).isEqualTo("10"); + assertThat(mBarView2.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView3.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView3.getTitle()).isEqualTo("5"); + assertThat(mBarView3.getTitle()).isEqualTo(mTitleStr); assertThat(mBarView4.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView4.getTitle()).isEqualTo("2"); + assertThat(mBarView4.getTitle()).isEqualTo(mTitleStr); } @Test @@ -245,11 +253,11 @@ public class BarChartPreferenceTest { thrown.expect(IllegalStateException.class); final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ - new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 50 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 70 /* barNumber */, R.string.debug_app, null), + new BarViewInfo(mIcon, 30, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 50, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 5, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 10, mTitleStr, mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 70, mTitleStr, mSummaryStr, null /* contentDescription */), }; mPreference.setBarViewInfos(barViewsInfo); @@ -258,10 +266,10 @@ public class BarChartPreferenceTest { @Test public void setBarViewInfos_barViewInfosSet_shouldBeSortedInDescending() { final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ - new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 50 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null), - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null), + new BarViewInfo(mIcon, 30, "30", mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 50, "50", mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 5, "5", mSummaryStr, null /* contentDescription */), + new BarViewInfo(mIcon, 10, "10", mSummaryStr, null /* contentDescription */) }; mPreference.initializeBarChart(mBarChartInfo); @@ -281,7 +289,7 @@ public class BarChartPreferenceTest { @Test public void setBarViewInfos_validBarViewSummarySet_barViewShouldShowSummary() { final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ - new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null), + new BarViewInfo(mIcon, 10, mTitleStr, mSummaryStr, null /* contentDescription */) }; mPreference.initializeBarChart(mBarChartInfo); @@ -289,13 +297,27 @@ public class BarChartPreferenceTest { mPreference.onBindViewHolder(mHolder); assertThat(mBarView1.getVisibility()).isEqualTo(View.VISIBLE); - assertThat(mBarView1.getSummary()).isEqualTo(mContext.getText(R.string.debug_app)); + assertThat(mBarView1.getSummary()).isEqualTo(mSummaryStr); + } + + @Test + public void setBarViewInfos_validBarViewTitleSet_barViewShouldShowTitle() { + final BarViewInfo[] barViewsInfo = new BarViewInfo[]{ + new BarViewInfo(mIcon, 10, mTitleStr, mSummaryStr, null /* contentDescription */) + }; + + mPreference.initializeBarChart(mBarChartInfo); + mPreference.setBarViewInfos(barViewsInfo); + mPreference.onBindViewHolder(mHolder); + + assertThat(mBarView1.getVisibility()).isEqualTo(View.VISIBLE); + assertThat(mBarView1.getTitle()).isEqualTo(mTitleStr); } @Test public void setBarViewInfos_clickListenerForBarViewSet_barViewShouldHaveClickListener() { - final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app, - null); + final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30, mTitleStr, mSummaryStr, + null /* contentDescription */); viewInfo.setClickListener(v -> { }); final BarViewInfo[] barViewsInfo = new BarViewInfo[]{viewInfo}; @@ -310,8 +332,8 @@ public class BarChartPreferenceTest { @Test public void onBindViewHolder_loadingStateIsTrue_shouldHideAllViews() { - final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app, - null); + final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30, mTitleStr, mSummaryStr, + null /* contentDescription */); viewInfo.setClickListener(v -> { }); final BarViewInfo[] barViewsInfo = new BarViewInfo[]{viewInfo}; @@ -327,8 +349,8 @@ public class BarChartPreferenceTest { @Test public void onBindViewHolder_loadingStateIsFalse_shouldInitAnyView() { - final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app, - null); + final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30, mTitleStr, mSummaryStr, + null /* contentDescription */); viewInfo.setClickListener(v -> { }); final BarViewInfo[] barViewsInfo = new BarViewInfo[]{viewInfo}; |