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
This commit is contained in:
Jason Monk
2016-01-11 14:27:20 -05:00
parent 703dae96e1
commit b37e2887d3
58 changed files with 3553 additions and 3309 deletions

View File

@@ -40,14 +40,13 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
import com.android.settings.AppHeader;
import com.android.settings.CancellablePreference;
import com.android.settings.CancellablePreference.OnCancelListener;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.SummaryPreference;
import com.android.settings.applications.ProcStatsEntry.Service;
import java.util.ArrayList;
@@ -87,8 +86,6 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment {
private long mTotalTime;
private long mOnePercentTime;
private LinearColorBar mColorBar;
private double mMaxMemoryUsage;
private double mTotalScale;
@@ -177,20 +174,19 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment {
mProcGroup = (PreferenceCategory) findPreference(KEY_PROCS);
fillProcessesSection();
LayoutPreference headerLayout = (LayoutPreference) findPreference(KEY_DETAILS_HEADER);
SummaryPreference summaryPreference = (SummaryPreference) findPreference(KEY_DETAILS_HEADER);
// TODO: Find way to share this code with ProcessStatsPreference.
boolean statsForeground = mApp.mRunWeight > mApp.mBgWeight;
double avgRam = (statsForeground ? mApp.mRunWeight : mApp.mBgWeight) * mWeightToRam;
float avgRatio = (float) (avgRam / mMaxMemoryUsage);
float remainingRatio = 1 - avgRatio;
mColorBar = (LinearColorBar) headerLayout.findViewById(R.id.color_bar);
Context context = getActivity();
mColorBar.setColors( context.getColor(R.color.memory_max_use), 0,
context.getColor(R.color.memory_remaining));
mColorBar.setRatios(avgRatio, 0, remainingRatio);
((TextView) headerLayout.findViewById(R.id.memory_state)).setText(
Formatter.formatShortFileSize(getContext(), (long) avgRam));
summaryPreference.setRatios(avgRatio, 0, remainingRatio);
Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(),
(long) avgRam, Formatter.FLAG_SHORTER);
summaryPreference.setAmount(usedResult.value);
summaryPreference.setUnits(usedResult.units);
long duration = Math.max(mApp.mRunDuration, mApp.mBgDuration);
CharSequence frequency = ProcStatsPackageEntry.getFrequency(duration