From 7977d5247c855a364ff0de8721f633333ed32131 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Mon, 25 Apr 2016 21:03:23 -0400 Subject: [PATCH] Tweak transparency and colors --- .../org/isoron/uhabits/helpers/UIHelper.java | 10 +++++ .../uhabits/views/CheckmarkWidgetView.java | 40 ++++++++----------- .../isoron/uhabits/views/HabitWidgetView.java | 26 +++++++----- app/src/main/res/layout/widget_checkmark.xml | 4 -- app/src/main/res/values/attrs.xml | 3 ++ app/src/main/res/values/colors.xml | 16 ++++---- app/src/main/res/values/styles.xml | 24 +++++++---- 7 files changed, 69 insertions(+), 54 deletions(-) diff --git a/app/src/main/java/org/isoron/uhabits/helpers/UIHelper.java b/app/src/main/java/org/isoron/uhabits/helpers/UIHelper.java index 184a2a4cc..04b03f4e7 100644 --- a/app/src/main/java/org/isoron/uhabits/helpers/UIHelper.java +++ b/app/src/main/java/org/isoron/uhabits/helpers/UIHelper.java @@ -230,6 +230,16 @@ public abstract class UIHelper return bool; } + public static float getStyledFloat(Context context, int attrId) + { + int[] attrs = new int[]{ attrId }; + TypedArray ta = context.obtainStyledAttributes(attrs); + float f = ta.getFloat(0, 0); + ta.recycle(); + + return f; + } + static int getStyleResource(Context context, int attrId) { int[] attr = new int[] { attrId }; diff --git a/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java b/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java index 68df61f7c..2d8525753 100644 --- a/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java +++ b/app/src/main/java/org/isoron/uhabits/views/CheckmarkWidgetView.java @@ -20,7 +20,6 @@ package org.isoron.uhabits.views; import android.content.Context; -import android.graphics.Color; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.AttributeSet; @@ -28,6 +27,7 @@ import android.widget.TextView; import org.isoron.uhabits.R; import org.isoron.uhabits.helpers.ColorHelper; +import org.isoron.uhabits.helpers.UIHelper; import org.isoron.uhabits.models.Checkmark; import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.models.Score; @@ -44,7 +44,6 @@ public class CheckmarkWidgetView extends HabitWidgetView implements HabitDataVie private RingView ring; private TextView label; private int checkmarkValue; - private int inactiveColor; public CheckmarkWidgetView(Context context) { @@ -63,8 +62,6 @@ public class CheckmarkWidgetView extends HabitWidgetView implements HabitDataVie ring = (RingView) findViewById(R.id.scoreRing); label = (TextView) findViewById(R.id.label); - inactiveColor = ColorHelper.CSV_PALETTE[11]; - if(isInEditMode()) { percentage = 0.75f; @@ -80,7 +77,7 @@ public class CheckmarkWidgetView extends HabitWidgetView implements HabitDataVie { super.setHabit(habit); this.name = habit.name; - this.activeColor = ColorHelper.CSV_PALETTE[habit.color]; + this.activeColor = ColorHelper.getColor(getContext(), habit.color); refresh(); } @@ -88,40 +85,41 @@ public class CheckmarkWidgetView extends HabitWidgetView implements HabitDataVie { if (backgroundPaint == null || frame == null || ring == null) return; + Context context = getContext(); + String text; int backgroundColor; int foregroundColor; - float alpha; switch (checkmarkValue) { case Checkmark.CHECKED_EXPLICITLY: text = getResources().getString(R.string.fa_check); backgroundColor = activeColor; - foregroundColor = Color.WHITE; - alpha = 1.0f; + foregroundColor = + UIHelper.getStyledColor(context, R.attr.highContrastReverseTextColor); + + setShadowAlpha(0x4f); + rebuildBackground(); + + backgroundPaint.setColor(backgroundColor); + frame.setBackgroundDrawable(background); break; case Checkmark.CHECKED_IMPLICITLY: text = getResources().getString(R.string.fa_check); - backgroundColor = inactiveColor; - foregroundColor = ColorHelper.CSV_PALETTE[12]; - alpha = 0.5f; + backgroundColor = UIHelper.getStyledColor(context, R.attr.cardBackgroundColor); + foregroundColor = UIHelper.getStyledColor(context, R.attr.mediumContrastTextColor); break; case Checkmark.UNCHECKED: default: text = getResources().getString(R.string.fa_times); - backgroundColor = inactiveColor; - foregroundColor = ColorHelper.CSV_PALETTE[12]; - alpha = 0.5f; + backgroundColor = UIHelper.getStyledColor(context, R.attr.cardBackgroundColor); + foregroundColor = UIHelper.getStyledColor(context, R.attr.mediumContrastTextColor); break; } - backgroundPaint.setColor(backgroundColor); - frame.setBackgroundDrawable(background); - setAlpha(alpha); - ring.setPercentage(percentage); ring.setPrecision(0.125f); ring.setColor(foregroundColor); @@ -167,10 +165,4 @@ public class CheckmarkWidgetView extends HabitWidgetView implements HabitDataVie { return R.layout.widget_checkmark; } - - @Override - protected int getShadowAlpha() - { - return 0x4f; - } } diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitWidgetView.java b/app/src/main/java/org/isoron/uhabits/views/HabitWidgetView.java index fd06346f4..d1ce347f9 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitWidgetView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitWidgetView.java @@ -49,6 +49,13 @@ public abstract class HabitWidgetView extends FrameLayout implements HabitDataV protected Habit habit; protected ViewGroup frame; + public void setShadowAlpha(int shadowAlpha) + { + this.shadowAlpha = shadowAlpha; + } + + private int shadowAlpha; + public HabitWidgetView(Context context) { super(context); @@ -64,19 +71,23 @@ public abstract class HabitWidgetView extends FrameLayout implements HabitDataV private void init() { inflate(getContext(), getInnerLayoutId(), this); - initBackground(); + shadowAlpha = (int) (255 * UIHelper.getStyledFloat(getContext(), R.attr.widgetShadowAlpha)); + rebuildBackground(); } protected abstract @NonNull Integer getInnerLayoutId(); - private void initBackground() + protected void rebuildBackground() { Context context = getContext(); - context.setTheme(R.style.DarkWidgetTheme); + context.setTheme(R.style.TransparentWidgetTheme); + + int backgroundAlpha = + (int) (255 * UIHelper.getStyledFloat(context, R.attr.widgetBackgroundAlpha)); int shadowRadius = (int) UIHelper.dpToPixels(context, 2); int shadowOffset = (int) UIHelper.dpToPixels(context, 1); - int shadowColor = Color.argb(getShadowAlpha(), 0, 0, 0); + int shadowColor = Color.argb(shadowAlpha, 0, 0, 0); float cornerRadius = UIHelper.dpToPixels(context, 5); float[] radii = new float[8]; @@ -93,17 +104,12 @@ public abstract class HabitWidgetView extends FrameLayout implements HabitDataV backgroundPaint = innerDrawable.getPaint(); backgroundPaint.setShadowLayer(shadowRadius, shadowOffset, shadowOffset, shadowColor); backgroundPaint.setColor(UIHelper.getStyledColor(context, R.attr.cardBackgroundColor)); - backgroundPaint.setAlpha(0x1f); + backgroundPaint.setAlpha(backgroundAlpha); frame = (ViewGroup) findViewById(R.id.frame); frame.setBackgroundDrawable(background); } - protected int getShadowAlpha() - { - return 0x2f; - } - @Override public void setHabit(@NonNull Habit habit) { diff --git a/app/src/main/res/layout/widget_checkmark.xml b/app/src/main/res/layout/widget_checkmark.xml index 631be3394..a6d0c01b7 100644 --- a/app/src/main/res/layout/widget_checkmark.xml +++ b/app/src/main/res/layout/widget_checkmark.xml @@ -32,13 +32,9 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" - habit:percentage="0.25" habit:thickness="2" habit:textSize="16" - habit:color="@color/white" - habit:inactiveColor="@color/white" habit:enableFontAwesome="true" - habit:text="@string/fa_check" android:layout_marginTop="8dp" android:layout_marginLeft="12dp" android:layout_marginRight="12dp"/> diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 249de4601..014ed2c09 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -44,6 +44,9 @@ + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 6153badaf..29616a09e 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -48,15 +48,15 @@ @color/grey_500 - - @color/red_900 - @color/deep_orange_900 - @color/yellow_900 + + @color/red_800 + @color/deep_orange_800 + @color/yellow_800 @color/lime_800 - @color/green_800 - @color/teal_800 - @color/cyan_800 - @color/light_blue_800 + @color/green_700 + @color/teal_700 + @color/cyan_700 + @color/light_blue_700 @color/deep_purple_700 @color/purple_700 @color/pink_700 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2135f4e0d..0ef48f94d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -44,12 +44,12 @@ @array/lightPalette @color/white - @color/grey_500 - @color/grey_700 + @color/white_a6 + @color/white_a2 - @color/grey_800 - @color/grey_500 - @color/grey_300 + @color/black_aa + @color/black_a6 + @color/black_a2 @drawable/ic_action_add_dark @drawable/ic_action_archive_dark @@ -60,6 +60,8 @@ @style/ThemeOverlay.AppCompat.Light @color/blue_800 + 0.25 + 1 -