Iterate on data usage chart UI.

Switched to inflating chart views from XML, using attributes for
configuration.  Start using drawable assets for chart components
instead of manually painting.  Include hand-cut assets, and animate
between states when touched to invoke.

Clamp sweeps to valid chart ranges and prepare for sweep labels.

Bug: 4768483, 4598460
Change-Id: Ic660c35bec826eb5e3f6a1dde3cc04d8c437ef2b
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index ef2282a..692c753 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -27,7 +27,6 @@
 import static android.net.NetworkTemplate.MATCH_MOBILE_4G;
 import static android.net.NetworkTemplate.MATCH_MOBILE_ALL;
 import static android.net.NetworkTemplate.MATCH_WIFI;
-import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 
 import android.app.AlertDialog;
@@ -68,7 +67,6 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.AbsListView;
 import android.widget.AdapterView;
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.AdapterView.OnItemSelectedListener;
@@ -204,6 +202,7 @@
         mDataEnabled.setOnCheckedChangeListener(mDataEnabledListener);
 
         mDisableAtLimit = new CheckBox(inflater.getContext());
+        mDisableAtLimit.setClickable(false);
         mDisableAtLimitView = inflatePreference(inflater, mSwitches, mDisableAtLimit);
         mDisableAtLimitView.setOnClickListener(mDisableAtLimitListener);
 
@@ -216,11 +215,8 @@
         mCycleSpinner.setAdapter(mCycleAdapter);
         mCycleSpinner.setOnItemSelectedListener(mCycleListener);
 
-        final int chartHeight = getResources().getDimensionPixelSize(
-                R.dimen.data_usage_chart_height);
-        mChart = new DataUsageChartView(context);
+        mChart = (DataUsageChartView) inflater.inflate(R.layout.data_usage_chart, mListView, false);
         mChart.setListener(mChartListener);
-        mChart.setLayoutParams(new AbsListView.LayoutParams(MATCH_PARENT, chartHeight));
         mListView.addHeaderView(mChart, null, false);
 
         mAdapter = new DataUsageAdapter();
@@ -791,7 +787,7 @@
         public View getView(int position, View convertView, ViewGroup parent) {
             if (convertView == null) {
                 convertView = LayoutInflater.from(parent.getContext()).inflate(
-                        android.R.layout.simple_list_item_2, parent, false);
+                        R.layout.data_usage_item, parent, false);
             }
 
             final Context context = parent.getContext();
@@ -1080,7 +1076,7 @@
 
     /**
      * Set {@link android.R.id#title} for a preference view inflated with
-     * {@link #inflatePreference(LayoutInflater, View, View)}.
+     * {@link #inflatePreference(LayoutInflater, ViewGroup, View)}.
      */
     private static void setPreferenceTitle(View parent, int resId) {
         final TextView title = (TextView) parent.findViewById(android.R.id.title);