From b37e2887d3112082589997f1bbd802ec282cca6d Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Mon, 11 Jan 2016 14:27:20 -0500 Subject: [PATCH] Update data usage UX Update the UX and dig the data usage screen out of a huge whole of technical debt. Switch every to use Preferences rather than standard layouts and ListViews. Split data usage into several fragments, all separated. DataUsageSummary: - Shows a summary of the 'default' usage at the top, this will be the default sim on phones, or wifi if it has it, or ethernet as last attempt to show something. - Also has individual categories for each network type that has data, cell, wifi, and ethernet. Maybe should look into bt though? DataUsageList: - Takes a NetworkTemplate as an input, and can only be reached from the network specific categories in DataUsageSummary - Shows a graph of current usage for that network and links to app detail page for any app. - Has gear link to quick get to billing cycle screen if available BillingCycleSettings: - Just a screen with the cycle day and warning/limits separated out from the data usage. AppDataUsage: - App specific data usage details - May need some UX iteration given lack of clarity in the spec Bug: 22459566 Change-Id: I0222d8d7ea7b75a9775207a6026ebbdcce8f5e46 --- AndroidManifest.xml | 2 +- res/drawable/data_sweep_limit.xml | 12 +- res/drawable/data_sweep_warning.xml | 12 +- res/layout/app_header.xml | 6 - res/layout/apps_filter_spinner.xml | 22 +- res/layout/data_usage_app_header.xml | 31 + res/layout/data_usage_chart.xml | 4 +- res/layout/data_usage_cycles.xml | 10 - res/layout/memory_key.xml | 58 - res/layout/preference_category_no_label.xml | 20 + res/layout/preference_category_short.xml | 27 + res/layout/preference_list_fragment.xml | 132 +- res/layout/proc_stats_ui.xml | 45 - res/layout/process_stats_details.xml | 47 - res/layout/settings_summary_preference.xml | 77 + res/menu/data_usage.xml | 18 - res/values/colors.xml | 5 +- res/values/strings.xml | 73 +- res/xml/app_data_usage.xml | 57 + res/xml/app_memory_settings.xml | 10 +- res/xml/billing_cycle.xml | 36 + res/xml/data_usage.xml | 38 + res/xml/data_usage_cellular.xml | 38 + res/xml/data_usage_ethernet.xml | 30 + res/xml/data_usage_list.xml | 37 + res/xml/data_usage_wifi.xml | 35 + res/xml/process_stats_summary.xml | 14 +- src/com/android/settings/AppHeader.java | 4 +- .../android/settings/DataUsageSummary.java | 2848 ----------------- .../settings/HighlightingFragment.java | 125 - .../settings/InstrumentedFragment.java | 3 + .../android/settings/SettingsActivity.java | 3 +- .../settings/SettingsPreferenceFragment.java | 6 +- .../android/settings/SummaryPreference.java | 99 + src/com/android/settings/Utils.java | 18 + .../applications/InstalledAppDetails.java | 17 +- .../applications/ProcessStatsDetail.java | 18 +- .../applications/ProcessStatsSummary.java | 24 +- .../settings/datausage/AppDataUsage.java | 343 ++ .../datausage/AppDataUsagePreference.java | 123 + .../datausage/BillingCyclePreference.java | 90 + .../datausage/BillingCycleSettings.java | 357 +++ .../datausage/CellDataPreference.java | 276 ++ .../datausage/ChartDataUsagePreference.java | 82 + .../settings/datausage/CycleAdapter.java | 188 ++ .../settings/datausage/DataUsageBase.java | 92 + .../settings/datausage/DataUsageList.java | 550 ++++ .../DataUsageMeteredSettings.java | 22 +- .../datausage/DataUsagePreference.java | 58 + .../settings/datausage/DataUsageSummary.java | 375 +++ .../NetworkRestrictionsPreference.java | 33 + .../RestrictBackgroundDataPreference.java | 99 + .../datausage/TemplatePreference.java | 41 + .../datausage/TemplatePreferenceCategory.java | 57 + src/com/android/settings/search/Ranking.java | 4 +- .../search/SearchIndexableResources.java | 8 +- .../settings/widget/ChartGridView.java | 2 +- .../settings/widget/ChartSweepView.java | 1 - 58 files changed, 3553 insertions(+), 3309 deletions(-) create mode 100644 res/layout/data_usage_app_header.xml delete mode 100644 res/layout/memory_key.xml create mode 100644 res/layout/preference_category_no_label.xml create mode 100644 res/layout/preference_category_short.xml delete mode 100644 res/layout/proc_stats_ui.xml delete mode 100644 res/layout/process_stats_details.xml create mode 100644 res/layout/settings_summary_preference.xml create mode 100644 res/xml/app_data_usage.xml create mode 100644 res/xml/billing_cycle.xml create mode 100644 res/xml/data_usage.xml create mode 100644 res/xml/data_usage_cellular.xml create mode 100644 res/xml/data_usage_ethernet.xml create mode 100644 res/xml/data_usage_list.xml create mode 100644 res/xml/data_usage_wifi.xml delete mode 100644 src/com/android/settings/DataUsageSummary.java delete mode 100644 src/com/android/settings/HighlightingFragment.java create mode 100644 src/com/android/settings/SummaryPreference.java create mode 100644 src/com/android/settings/datausage/AppDataUsage.java create mode 100644 src/com/android/settings/datausage/AppDataUsagePreference.java create mode 100644 src/com/android/settings/datausage/BillingCyclePreference.java create mode 100644 src/com/android/settings/datausage/BillingCycleSettings.java create mode 100644 src/com/android/settings/datausage/CellDataPreference.java create mode 100644 src/com/android/settings/datausage/ChartDataUsagePreference.java create mode 100644 src/com/android/settings/datausage/CycleAdapter.java create mode 100644 src/com/android/settings/datausage/DataUsageBase.java create mode 100644 src/com/android/settings/datausage/DataUsageList.java rename src/com/android/settings/{net => datausage}/DataUsageMeteredSettings.java (93%) create mode 100644 src/com/android/settings/datausage/DataUsagePreference.java create mode 100644 src/com/android/settings/datausage/DataUsageSummary.java create mode 100644 src/com/android/settings/datausage/NetworkRestrictionsPreference.java create mode 100644 src/com/android/settings/datausage/RestrictBackgroundDataPreference.java create mode 100644 src/com/android/settings/datausage/TemplatePreference.java create mode 100644 src/com/android/settings/datausage/TemplatePreferenceCategory.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 186ddf7874c..3281adedf3f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2226,7 +2226,7 @@ + android:value="com.android.settings.datausage.DataUsageSummary" /> - - - + + + diff --git a/res/drawable/data_sweep_warning.xml b/res/drawable/data_sweep_warning.xml index 5c0a1e9f9b3..b0f5fda569f 100644 --- a/res/drawable/data_sweep_warning.xml +++ b/res/drawable/data_sweep_warning.xml @@ -14,6 +14,12 @@ limitations under the License. --> - - - + + + diff --git a/res/layout/app_header.xml b/res/layout/app_header.xml index ffc68296309..6c13ae886ea 100644 --- a/res/layout/app_header.xml +++ b/res/layout/app_header.xml @@ -53,11 +53,5 @@ android:src="@drawable/ic_info" style="?android:attr/borderlessButtonStyle" /> - - diff --git a/res/layout/apps_filter_spinner.xml b/res/layout/apps_filter_spinner.xml index 45e64c4e123..b8b5c908c25 100644 --- a/res/layout/apps_filter_spinner.xml +++ b/res/layout/apps_filter_spinner.xml @@ -20,22 +20,34 @@ android:layout_height="?android:attr/actionBarSize" android:background="@drawable/switchbar_background" android:gravity="center_vertical" + android:paddingEnd="@dimen/switchbar_subsettings_margin_end" android:theme="?attr/switchBarTheme" > - + + diff --git a/res/layout/data_usage_app_header.xml b/res/layout/data_usage_app_header.xml new file mode 100644 index 00000000000..8ca391a051c --- /dev/null +++ b/res/layout/data_usage_app_header.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + diff --git a/res/layout/data_usage_chart.xml b/res/layout/data_usage_chart.xml index 648c7f8d7e4..3a2ee098631 100644 --- a/res/layout/data_usage_chart.xml +++ b/res/layout/data_usage_chart.xml @@ -22,8 +22,8 @@ android:id="@+id/chart" android:layout_width="match_parent" android:layout_height="@dimen/data_usage_chart_height" - android:paddingLeft="?android:attr/listPreferredItemPaddingStart" - android:paddingRight="40dp" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:paddingTop="16dp" android:paddingBottom="24dp"> diff --git a/res/layout/data_usage_cycles.xml b/res/layout/data_usage_cycles.xml index 45143ecef3c..5267e26a602 100644 --- a/res/layout/data_usage_cycles.xml +++ b/res/layout/data_usage_cycles.xml @@ -31,14 +31,4 @@ android:textAppearance="@android:style/TextAppearance.Material.Subhead" android:textColor="?android:attr/textColorPrimary" /> - - diff --git a/res/layout/memory_key.xml b/res/layout/memory_key.xml deleted file mode 100644 index 62db2fc5123..00000000000 --- a/res/layout/memory_key.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - diff --git a/res/layout/preference_category_no_label.xml b/res/layout/preference_category_no_label.xml new file mode 100644 index 00000000000..dafabb23124 --- /dev/null +++ b/res/layout/preference_category_no_label.xml @@ -0,0 +1,20 @@ + + + + diff --git a/res/layout/preference_category_short.xml b/res/layout/preference_category_short.xml new file mode 100644 index 00000000000..452d0bc80b4 --- /dev/null +++ b/res/layout/preference_category_short.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/res/layout/preference_list_fragment.xml b/res/layout/preference_list_fragment.xml index 99e764fd56d..f8badcf5d33 100644 --- a/res/layout/preference_list_fragment.xml +++ b/res/layout/preference_list_fragment.xml @@ -18,95 +18,95 @@ --> + android:id="@+id/container_material" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@android:color/transparent"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" /> - + + style="@style/PreferenceFragmentListSinglePane" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingStart="@dimen/settings_side_margin" + android:paddingEnd="@dimen/settings_side_margin" + android:paddingTop="@dimen/dashboard_padding_top" + android:paddingBottom="@dimen/dashboard_padding_bottom" + android:scrollbarStyle="@*android:integer/preference_fragment_scrollbarStyle" + android:clipToPadding="false" + android:drawSelectorOnTop="false" + android:elevation="@dimen/dashboard_category_elevation" + android:visibility="gone" + android:scrollbarAlwaysDrawVerticalTrack="true" /> + android:id="@+id/fab" + android:visibility="gone" + android:clickable="true" + android:layout_width="@dimen/fab_size" + android:layout_height="@dimen/fab_size" + android:layout_gravity="bottom|end" + android:layout_marginEnd="@dimen/fab_margin" + android:layout_marginBottom="@dimen/fab_margin" + android:elevation="@dimen/fab_elevation" + android:background="@drawable/fab_background" /> + android:layout_width="match_parent" + android:layout_height="match_parent" + android:padding="@*android:dimen/preference_fragment_padding_side" + android:gravity="center" + android:visibility="gone" /> + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:layout_weight="0" + android:visibility="gone">