OSDN Git Service

Update color bar defaults to use theme attr colors
authorAndrew Sapperstein <asapperstein@google.com>
Sat, 21 May 2016 01:38:01 +0000 (18:38 -0700)
committerAndrew Sapperstein <asapperstein@google.com>
Wed, 25 May 2016 01:08:36 +0000 (18:08 -0700)
Previously the values were hardcoded. Now the default value
for left and middle are colorAccent. Also updated SummaryPreference
to not call LinearColorBar.setColors unless its own setColors is called.

BUG: 28760785

Change-Id: Id28e809e6b5f0f6508258c995d5dcfacbc9c8725

res/values/colors.xml
src/com/android/settings/SummaryPreference.java
src/com/android/settings/applications/LinearColorBar.java

index 003eda9..ab04c24 100644 (file)
@@ -98,9 +98,6 @@
     <!-- Accent color that matches the settings launcher icon -->
     <color name="icon_accent">#ffabffec</color>
 
-    <color name="summary_default_start">#ff009587</color>
-    <color name="summary_default_end">#ffced7db</color>
-
     <color name="importance_icon_tint">#8a000000</color>
     <color name="importance_disabled_tint">#4d000000</color>
 
index 0943a2b..38449b1 100644 (file)
@@ -33,6 +33,7 @@ public class SummaryPreference extends Preference {
     private String mUnits;
 
     private int mLeft, mMiddle, mRight;
+    private boolean mColorsSet = false;
     private float mLeftRatio, mMiddleRatio, mRightRatio;
     private String mStartLabel;
     private String mEndLabel;
@@ -40,8 +41,6 @@ public class SummaryPreference extends Preference {
     public SummaryPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         setLayoutResource(R.layout.settings_summary_preference);
-        mLeft = context.getColor(R.color.summary_default_start);
-        mRight = context.getColor(R.color.summary_default_end);
     }
 
     public void setAmount(String amount) {
@@ -77,6 +76,7 @@ public class SummaryPreference extends Preference {
         mLeft = left;
         mMiddle = middle;
         mRight = right;
+        mColorsSet = true;
         notifyChanged();
     }
 
@@ -86,7 +86,9 @@ public class SummaryPreference extends Preference {
 
         LinearColorBar colorBar = (LinearColorBar) holder.itemView.findViewById(R.id.color_bar);
         colorBar.setRatios(mLeftRatio, mMiddleRatio, mRightRatio);
-        colorBar.setColors(mLeft, mMiddle, mRight);
+        if (mColorsSet) {
+            colorBar.setColors(mLeft, mMiddle, mRight);
+        }
 
         if (!TextUtils.isEmpty(mStartLabel) || !TextUtils.isEmpty(mEndLabel)) {
             holder.findViewById(R.id.label_bar).setVisibility(View.VISIBLE);
index 158a625..53b6ab6 100644 (file)
@@ -4,6 +4,7 @@
 package com.android.settings.applications;
 
 import android.content.Context;
+import android.content.res.Resources;
 import android.graphics.Canvas;
 import android.graphics.LinearGradient;
 import android.graphics.Paint;
@@ -12,12 +13,12 @@ import android.graphics.Rect;
 import android.graphics.Shader;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
+import android.util.TypedValue;
 import android.view.MotionEvent;
 import android.widget.LinearLayout;
 
 public class LinearColorBar extends LinearLayout {
-    static final int LEFT_COLOR = 0xff009688;
-    static final int MIDDLE_COLOR = 0xff009688;
+
     static final int RIGHT_COLOR = 0xffced7db;
     static final int GRAY_COLOR = 0xff555555;
     static final int WHITE_COLOR = 0xffffffff;
@@ -26,8 +27,8 @@ public class LinearColorBar extends LinearLayout {
     private float mYellowRatio;
     private float mGreenRatio;
 
-    private int mLeftColor = LEFT_COLOR;
-    private int mMiddleColor = MIDDLE_COLOR;
+    private int mLeftColor;
+    private int mMiddleColor;
     private int mRightColor = RIGHT_COLOR;
 
     private boolean mShowIndicator = true;
@@ -70,7 +71,11 @@ public class LinearColorBar extends LinearLayout {
                 ? 2 : 1;
         mEdgeGradientPaint.setStrokeWidth(mLineWidth);
         mEdgeGradientPaint.setAntiAlias(true);
-        
+
+        Resources.Theme theme = context.getTheme();
+        TypedValue typedValue = new TypedValue();
+        theme.resolveAttribute(android.R.attr.colorAccent, typedValue, true);
+        mLeftColor = mMiddleColor = context.getColor(typedValue.resourceId);
     }
 
     public void setOnRegionTappedListener(OnRegionTappedListener listener) {