Use white or black text for category chip, depending on brighness of background
This commit is contained in:
parent
444ba43ac0
commit
963996b412
@ -97,6 +97,8 @@ public class CategorySpan extends ReplacementSpan {
|
|||||||
RectF backgroundRect = new RectF(0, 0, iconBackgroundSize + textLeadingPadding
|
RectF backgroundRect = new RectF(0, 0, iconBackgroundSize + textLeadingPadding
|
||||||
+ textWidth + textTrailingPadding, height);
|
+ textWidth + textTrailingPadding, height);
|
||||||
|
|
||||||
|
int backgroundColour = CategoryController.getBackgroundColour(context, categoryName.toString());
|
||||||
|
|
||||||
// The shadow below the entire category chip.
|
// The shadow below the entire category chip.
|
||||||
canvas.save();
|
canvas.save();
|
||||||
canvas.translate(0, DROP_SHADOW_HEIGHT * density);
|
canvas.translate(0, DROP_SHADOW_HEIGHT * density);
|
||||||
@ -108,7 +110,7 @@ public class CategorySpan extends ReplacementSpan {
|
|||||||
|
|
||||||
// The background which goes behind the text.
|
// The background which goes behind the text.
|
||||||
Paint backgroundPaint = new Paint();
|
Paint backgroundPaint = new Paint();
|
||||||
backgroundPaint.setColor(CategoryController.getBackgroundColour(context, categoryName.toString()));
|
backgroundPaint.setColor(backgroundColour);
|
||||||
backgroundPaint.setAntiAlias(true);
|
backgroundPaint.setAntiAlias(true);
|
||||||
canvas.drawRoundRect(backgroundRect, cornerRadius, cornerRadius, backgroundPaint);
|
canvas.drawRoundRect(backgroundRect, cornerRadius, cornerRadius, backgroundPaint);
|
||||||
|
|
||||||
@ -124,9 +126,15 @@ public class CategorySpan extends ReplacementSpan {
|
|||||||
icon.setBounds(iconPadding, iconPadding, iconPadding + iconSize, iconPadding + iconSize);
|
icon.setBounds(iconPadding, iconPadding, iconPadding + iconSize, iconPadding + iconSize);
|
||||||
icon.draw(canvas);
|
icon.draw(canvas);
|
||||||
|
|
||||||
|
// Choose white or black text based on the perceived brightness.
|
||||||
|
// Uses some arbitrary magic from https://stackoverflow.com/a/946734/2391921
|
||||||
|
double grey = Color.red(backgroundColour) * 0.299 +
|
||||||
|
Color.green(backgroundColour) * 0.587 +
|
||||||
|
Color.blue(backgroundColour) * 0.114;
|
||||||
|
|
||||||
// The category name drawn to the right of the category name.
|
// The category name drawn to the right of the category name.
|
||||||
Paint textPaint = new Paint(paint);
|
Paint textPaint = new Paint(paint);
|
||||||
textPaint.setColor(Color.WHITE);
|
textPaint.setColor(grey < 186 ? Color.WHITE : Color.BLACK);
|
||||||
canvas.drawText(categoryName.toString(), iconBackgroundSize + textLeadingPadding, bottom, textPaint);
|
canvas.drawText(categoryName.toString(), iconBackgroundSize + textLeadingPadding, bottom, textPaint);
|
||||||
|
|
||||||
canvas.restore();
|
canvas.restore();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user