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

    +
  1. IMPROVEMENT: Completely rewritten color chooser. Had great help from Aidan Follestad here once again. +
  2. IMPROVEMENT: Increased album cover quality when selecting the "ignore media store covers" option.
  3. 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 @@ - -