diff --git a/app/src/main/assets/changelog.html b/app/src/main/assets/changelog.html
index e604bc97..9fc0d21a 100644
--- a/app/src/main/assets/changelog.html
+++ b/app/src/main/assets/changelog.html
@@ -28,6 +28,9 @@
Version 0.9.44 beta1
+ - IMPROVEMENT: Completely rewritten color chooser. Had great help from Aidan Follestad here once again.
+
- IMPROVEMENT: Increased album cover quality when selecting the "ignore media store
covers" option.
diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ColorChooserDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ColorChooserDialog.java
index 7000a081..6d12615e 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/ColorChooserDialog.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/dialogs/ColorChooserDialog.java
@@ -100,7 +100,7 @@ public class ColorChooserDialog extends LeakDetectDialogFragment implements View
private void setIndexesFor(@ColorInt int color) {
if (getTopIndex() != -1) return;
- if (color != -1) {
+ if (color != 0) {
for (int i = 0; i < colorSetWithHeaders.colors.length; i++) {
for (int z = 0; z < colorSetWithHeaders.colors[i].length; z++) {
if (color == colorSetWithHeaders.colors[i][z]) {
@@ -223,10 +223,10 @@ public class ColorChooserDialog extends LeakDetectDialogFragment implements View
}
SelectableColorView child = (SelectableColorView) convertView;
if (isInSub()) {
- child.setBackgroundColor(colorSetWithHeaders.colors[getTopIndex()][position]);
+ child.setColor(colorSetWithHeaders.colors[getTopIndex()][position]);
child.setSelected(getSubIndex() == position);
} else {
- child.setBackgroundColor(colorSetWithHeaders.colors[position][colorSetWithHeaders.headerColorIndexes[position]]);
+ child.setColor(colorSetWithHeaders.colors[position][colorSetWithHeaders.headerColorIndexes[position]]);
child.setSelected(getTopIndex() == position);
}
child.setTag(position);
diff --git a/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java b/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java
index 46756f84..57119d40 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/helper/ColorPalette.java
@@ -24,7 +24,7 @@ public class ColorPalette {
5,
5,
5,
- 5,
+ 6,
5
};
@@ -234,6 +234,7 @@ public class ColorPalette {
Color.parseColor("#3E2723")
},
new int[]{
+ Color.parseColor("#FFFFFF"), // not in the original palette
Color.parseColor("#FAFAFA"),
Color.parseColor("#F5F5F5"),
Color.parseColor("#EEEEEE"),
@@ -244,6 +245,7 @@ public class ColorPalette {
Color.parseColor("#616161"),
Color.parseColor("#424242"),
Color.parseColor("#212121"),
+ Color.parseColor("#000000") // not in the original palette
},
new int[]{
Color.parseColor("#ECEFF1"),
@@ -275,6 +277,7 @@ public class ColorPalette {
1,
1,
1,
+ 1,
1
};
@@ -376,5 +379,11 @@ public class ColorPalette {
Color.parseColor("#ff3d00"),
Color.parseColor("#dd2c00")
},
+ new int[]{
+ Color.parseColor("#FFFFFF"), // not in the original palette
+ Color.parseColor("#9E9E9E"), // not in the original palette
+ Color.parseColor("#424242"), // not in the original palette
+ Color.parseColor("#000000") // not in the original palette
+ }
};
}
diff --git a/app/src/main/java/com/kabouzeid/gramophone/prefs/ColorChooserPreference.java b/app/src/main/java/com/kabouzeid/gramophone/prefs/ColorChooserPreference.java
index 7c70e074..ecdf00ae 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/prefs/ColorChooserPreference.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/prefs/ColorChooserPreference.java
@@ -13,7 +13,7 @@ import com.kabouzeid.gramophone.views.ColorView;
public class ColorChooserPreference extends Preference {
@ColorInt
- private int color = -1;
+ private int color;
private ColorView colorView;
public ColorChooserPreference(@NonNull Context context) {
@@ -44,9 +44,9 @@ public class ColorChooserPreference extends Preference {
private void invalidateColor() {
if (colorView != null) {
- if (this.color != -1) {
+ if (this.color != 0) {
colorView.setVisibility(View.VISIBLE);
- colorView.setBackgroundColor(color);
+ colorView.setColor(color);
} else {
colorView.setVisibility(View.GONE);
}
diff --git a/app/src/main/java/com/kabouzeid/gramophone/views/ColorView.java b/app/src/main/java/com/kabouzeid/gramophone/views/ColorView.java
index a79ee585..2d93379f 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/views/ColorView.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/views/ColorView.java
@@ -37,8 +37,7 @@ public class ColorView extends FrameLayout {
setWillNotDraw(false);
}
- @Override
- public void setBackgroundColor(int color) {
+ public void setColor(int color) {
paint.setColor(color);
paintBorder.setColor(ColorUtil.shiftColorDown(color));
requestLayout();
@@ -62,7 +61,6 @@ public class ColorView extends FrameLayout {
}
}
-
@Override
protected void onDraw(@NonNull Canvas canvas) {
super.onDraw(canvas);
diff --git a/app/src/main/java/com/kabouzeid/gramophone/views/SelectableColorView.java b/app/src/main/java/com/kabouzeid/gramophone/views/SelectableColorView.java
index ea868c70..9bb7a151 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/views/SelectableColorView.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/views/SelectableColorView.java
@@ -12,8 +12,6 @@ import android.graphics.drawable.StateListDrawable;
import android.graphics.drawable.shapes.OvalShape;
import android.os.Build;
import android.support.annotation.ColorInt;
-import android.support.annotation.ColorRes;
-import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.widget.FrameLayout;
@@ -24,13 +22,15 @@ import com.kabouzeid.gramophone.util.ColorUtil;
public class SelectableColorView extends FrameLayout {
+ private boolean selected;
+
+ private final int borderWidthExtraSmall;
private final int borderWidthSmall;
private final int borderWidthLarge;
private Paint outerPaint;
private Paint gapPaint;
private Paint innerPaint;
- private boolean mSelected;
public SelectableColorView(Context context) {
this(context, null, 0);
@@ -43,12 +43,13 @@ public class SelectableColorView extends FrameLayout {
public SelectableColorView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
final Resources r = getResources();
+ borderWidthExtraSmall = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, r.getDisplayMetrics());
borderWidthSmall = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 3, r.getDisplayMetrics());
borderWidthLarge = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, r.getDisplayMetrics());
gapPaint = new Paint();
gapPaint.setAntiAlias(true);
- gapPaint.setColor(ColorUtil.resolveColor(context, R.attr.cardBackgroundColor));
+ resetGapColor();
innerPaint = new Paint();
innerPaint.setAntiAlias(true);
@@ -59,7 +60,11 @@ public class SelectableColorView extends FrameLayout {
setWillNotDraw(false);
}
- private void update(@ColorInt int color) {
+ private void resetGapColor() {
+ gapPaint.setColor(ColorUtil.resolveColor(getContext(), R.attr.cardBackgroundColor));
+ }
+
+ private void updateColor(@ColorInt int color) {
innerPaint.setColor(color);
outerPaint.setColor(ColorUtil.shiftColorDown(color));
@@ -92,49 +97,15 @@ public class SelectableColorView extends FrameLayout {
}
}
- @Override
- public void setBackgroundColor(@ColorInt int color) {
- update(color);
+ public void setColor(@ColorInt int color) {
+ updateColor(color);
requestLayout();
invalidate();
}
@Override
- public void setBackgroundResource(@ColorRes int color) {
- setBackgroundColor(ContextCompat.getColor(getContext(), color));
- }
-
- /**
- * @deprecated
- */
- @Deprecated
- @Override
- public void setBackground(Drawable background) {
- throw new IllegalStateException("Cannot use setBackground() on CircleView.");
- }
-
- /**
- * @deprecated
- */
- @SuppressWarnings("deprecation")
- @Deprecated
- @Override
- public void setBackgroundDrawable(Drawable background) {
- throw new IllegalStateException("Cannot use setBackgroundDrawable() on CircleView.");
- }
-
- /**
- * @deprecated
- */
- @SuppressWarnings("deprecation")
- @Deprecated
- @Override
- public void setActivated(boolean activated) {
- throw new IllegalStateException("Cannot use setActivated() on CircleView.");
- }
-
public void setSelected(boolean selected) {
- mSelected = selected;
+ this.selected = selected;
requestLayout();
invalidate();
}
@@ -159,7 +130,7 @@ public class SelectableColorView extends FrameLayout {
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
final int outerRadius = getMeasuredWidth() / 2;
- if (mSelected) {
+ if (selected) {
final int whiteRadius = outerRadius - borderWidthLarge;
final int innerRadius = whiteRadius - borderWidthSmall;
canvas.drawCircle(getMeasuredWidth() / 2,
@@ -175,9 +146,14 @@ public class SelectableColorView extends FrameLayout {
innerRadius,
innerPaint);
} else {
+ final int innerRadius = outerRadius - borderWidthExtraSmall;
canvas.drawCircle(getMeasuredWidth() / 2,
getMeasuredHeight() / 2,
outerRadius,
+ outerPaint);
+ canvas.drawCircle(getMeasuredWidth() / 2,
+ getMeasuredHeight() / 2,
+ innerRadius,
innerPaint);
}
}
diff --git a/app/src/main/res/layout/griditem_color_chooser.xml b/app/src/main/res/layout/griditem_color_chooser.xml
deleted file mode 100644
index 2d7d63df..00000000
--- a/app/src/main/res/layout/griditem_color_chooser.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-