use maven repo for text drawable
This commit is contained in:
parent
daf85b0b52
commit
615f067609
@ -44,5 +44,6 @@ dependencies {
|
|||||||
compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
|
compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
|
||||||
compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
|
compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar'
|
||||||
compile 'com.nineoldandroids:library:2.4.0'
|
compile 'com.nineoldandroids:library:2.4.0'
|
||||||
|
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
||||||
compile files('libs/YouTubeAndroidPlayerApi.jar')
|
compile files('libs/YouTubeAndroidPlayerApi.jar')
|
||||||
}
|
}
|
||||||
|
@ -1,316 +0,0 @@
|
|||||||
package com.amulyakhare.textdrawable;
|
|
||||||
|
|
||||||
import android.graphics.*;
|
|
||||||
import android.graphics.drawable.ShapeDrawable;
|
|
||||||
import android.graphics.drawable.shapes.OvalShape;
|
|
||||||
import android.graphics.drawable.shapes.RectShape;
|
|
||||||
import android.graphics.drawable.shapes.RoundRectShape;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author amulya
|
|
||||||
* @datetime 14 Oct 2014, 3:53 PM
|
|
||||||
*/
|
|
||||||
public class TextDrawable extends ShapeDrawable {
|
|
||||||
|
|
||||||
private final Paint textPaint;
|
|
||||||
private final Paint borderPaint;
|
|
||||||
private static final float SHADE_FACTOR = 0.9f;
|
|
||||||
private final String text;
|
|
||||||
private final int color;
|
|
||||||
private final RectShape shape;
|
|
||||||
private final int height;
|
|
||||||
private final int width;
|
|
||||||
private final int fontSize;
|
|
||||||
private final float radius;
|
|
||||||
private final int borderThickness;
|
|
||||||
|
|
||||||
private TextDrawable(Builder builder) {
|
|
||||||
super(builder.shape);
|
|
||||||
|
|
||||||
// shape properties
|
|
||||||
shape = builder.shape;
|
|
||||||
height = builder.height;
|
|
||||||
width = builder.width;
|
|
||||||
radius = builder.radius;
|
|
||||||
|
|
||||||
// text and color
|
|
||||||
text = builder.toUpperCase ? builder.text.toUpperCase() : builder.text;
|
|
||||||
color = builder.color;
|
|
||||||
|
|
||||||
// text paint settings
|
|
||||||
fontSize = builder.fontSize;
|
|
||||||
textPaint = new Paint();
|
|
||||||
textPaint.setColor(builder.textColor);
|
|
||||||
textPaint.setAntiAlias(true);
|
|
||||||
textPaint.setFakeBoldText(builder.isBold);
|
|
||||||
textPaint.setStyle(Paint.Style.FILL);
|
|
||||||
textPaint.setTypeface(builder.font);
|
|
||||||
textPaint.setTextAlign(Paint.Align.CENTER);
|
|
||||||
textPaint.setStrokeWidth(builder.borderThickness);
|
|
||||||
|
|
||||||
// border paint settings
|
|
||||||
borderThickness = builder.borderThickness;
|
|
||||||
borderPaint = new Paint();
|
|
||||||
borderPaint.setColor(getDarkerShade(color));
|
|
||||||
borderPaint.setStyle(Paint.Style.STROKE);
|
|
||||||
borderPaint.setStrokeWidth(borderThickness);
|
|
||||||
|
|
||||||
// drawable paint color
|
|
||||||
Paint paint = getPaint();
|
|
||||||
paint.setColor(color);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getDarkerShade(int color) {
|
|
||||||
return Color.rgb((int)(SHADE_FACTOR * Color.red(color)),
|
|
||||||
(int)(SHADE_FACTOR * Color.green(color)),
|
|
||||||
(int)(SHADE_FACTOR * Color.blue(color)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void draw(Canvas canvas) {
|
|
||||||
super.draw(canvas);
|
|
||||||
Rect r = getBounds();
|
|
||||||
|
|
||||||
|
|
||||||
// draw border
|
|
||||||
if (borderThickness > 0) {
|
|
||||||
drawBorder(canvas);
|
|
||||||
}
|
|
||||||
|
|
||||||
int count = canvas.save();
|
|
||||||
canvas.translate(r.left, r.top);
|
|
||||||
|
|
||||||
// draw text
|
|
||||||
int width = this.width < 0 ? r.width() : this.width;
|
|
||||||
int height = this.height < 0 ? r.height() : this.height;
|
|
||||||
int fontSize = this.fontSize < 0 ? (Math.min(width, height) / 2) : this.fontSize;
|
|
||||||
textPaint.setTextSize(fontSize);
|
|
||||||
canvas.drawText(text, width / 2, height / 2 - ((textPaint.descent() + textPaint.ascent()) / 2), textPaint);
|
|
||||||
|
|
||||||
canvas.restoreToCount(count);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void drawBorder(Canvas canvas) {
|
|
||||||
RectF rect = new RectF(getBounds());
|
|
||||||
rect.inset(borderThickness/2, borderThickness/2);
|
|
||||||
|
|
||||||
if (shape instanceof OvalShape) {
|
|
||||||
canvas.drawOval(rect, borderPaint);
|
|
||||||
}
|
|
||||||
else if (shape instanceof RoundRectShape) {
|
|
||||||
canvas.drawRoundRect(rect, radius, radius, borderPaint);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
canvas.drawRect(rect, borderPaint);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setAlpha(int alpha) {
|
|
||||||
textPaint.setAlpha(alpha);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setColorFilter(ColorFilter cf) {
|
|
||||||
textPaint.setColorFilter(cf);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getOpacity() {
|
|
||||||
return PixelFormat.TRANSLUCENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getIntrinsicWidth() {
|
|
||||||
return width;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getIntrinsicHeight() {
|
|
||||||
return height;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IShapeBuilder builder() {
|
|
||||||
return new Builder();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Builder implements IConfigBuilder, IShapeBuilder, IBuilder {
|
|
||||||
|
|
||||||
private String text;
|
|
||||||
|
|
||||||
private int color;
|
|
||||||
|
|
||||||
private int borderThickness;
|
|
||||||
|
|
||||||
private int width;
|
|
||||||
|
|
||||||
private int height;
|
|
||||||
|
|
||||||
private Typeface font;
|
|
||||||
|
|
||||||
private RectShape shape;
|
|
||||||
|
|
||||||
public int textColor;
|
|
||||||
|
|
||||||
private int fontSize;
|
|
||||||
|
|
||||||
private boolean isBold;
|
|
||||||
|
|
||||||
private boolean toUpperCase;
|
|
||||||
|
|
||||||
public float radius;
|
|
||||||
|
|
||||||
private Builder() {
|
|
||||||
text = "";
|
|
||||||
color = Color.GRAY;
|
|
||||||
textColor = Color.WHITE;
|
|
||||||
borderThickness = 0;
|
|
||||||
width = -1;
|
|
||||||
height = -1;
|
|
||||||
shape = new RectShape();
|
|
||||||
font = Typeface.create("sans-serif-light", Typeface.NORMAL);
|
|
||||||
fontSize = -1;
|
|
||||||
isBold = false;
|
|
||||||
toUpperCase = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder width(int width) {
|
|
||||||
this.width = width;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder height(int height) {
|
|
||||||
this.height = height;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder textColor(int color) {
|
|
||||||
this.textColor = color;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder withBorder(int thickness) {
|
|
||||||
this.borderThickness = thickness;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder useFont(Typeface font) {
|
|
||||||
this.font = font;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder fontSize(int size) {
|
|
||||||
this.fontSize = size;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder bold() {
|
|
||||||
this.isBold = true;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IConfigBuilder toUpperCase() {
|
|
||||||
this.toUpperCase = true;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IConfigBuilder beginConfig() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IShapeBuilder endConfig() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IBuilder rect() {
|
|
||||||
this.shape = new RectShape();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IBuilder round() {
|
|
||||||
this.shape = new OvalShape();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IBuilder roundRect(int radius) {
|
|
||||||
this.radius = radius;
|
|
||||||
float[] radii = {radius, radius, radius, radius, radius, radius, radius, radius};
|
|
||||||
this.shape = new RoundRectShape(radii, null, null);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TextDrawable buildRect(String text, int color) {
|
|
||||||
rect();
|
|
||||||
return build(text, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TextDrawable buildRoundRect(String text, int color, int radius) {
|
|
||||||
roundRect(radius);
|
|
||||||
return build(text, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TextDrawable buildRound(String text, int color) {
|
|
||||||
round();
|
|
||||||
return build(text, color);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TextDrawable build(String text, int color) {
|
|
||||||
this.color = color;
|
|
||||||
this.text = text;
|
|
||||||
return new TextDrawable(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface IConfigBuilder {
|
|
||||||
public IConfigBuilder width(int width);
|
|
||||||
|
|
||||||
public IConfigBuilder height(int height);
|
|
||||||
|
|
||||||
public IConfigBuilder textColor(int color);
|
|
||||||
|
|
||||||
public IConfigBuilder withBorder(int thickness);
|
|
||||||
|
|
||||||
public IConfigBuilder useFont(Typeface font);
|
|
||||||
|
|
||||||
public IConfigBuilder fontSize(int size);
|
|
||||||
|
|
||||||
public IConfigBuilder bold();
|
|
||||||
|
|
||||||
public IConfigBuilder toUpperCase();
|
|
||||||
|
|
||||||
public IShapeBuilder endConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static interface IBuilder {
|
|
||||||
|
|
||||||
public TextDrawable build(String text, int color);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static interface IShapeBuilder {
|
|
||||||
|
|
||||||
public IConfigBuilder beginConfig();
|
|
||||||
|
|
||||||
public IBuilder rect();
|
|
||||||
|
|
||||||
public IBuilder round();
|
|
||||||
|
|
||||||
public IBuilder roundRect(int radius);
|
|
||||||
|
|
||||||
public TextDrawable buildRect(String text, int color);
|
|
||||||
|
|
||||||
public TextDrawable buildRoundRect(String text, int color, int radius);
|
|
||||||
|
|
||||||
public TextDrawable buildRound(String text, int color);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
package com.amulyakhare.textdrawable.util;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author amulya
|
|
||||||
* @datetime 14 Oct 2014, 5:20 PM
|
|
||||||
*/
|
|
||||||
public class ColorGenerator {
|
|
||||||
|
|
||||||
public static ColorGenerator DEFAULT;
|
|
||||||
|
|
||||||
static {
|
|
||||||
DEFAULT = create(Arrays.asList(
|
|
||||||
0xfff16364,
|
|
||||||
0xfff58559,
|
|
||||||
0xfff9a43e,
|
|
||||||
0xffe4c62e,
|
|
||||||
0xff67bf74,
|
|
||||||
0xff59a2be,
|
|
||||||
0xff2093cd,
|
|
||||||
0xffad62a7,
|
|
||||||
0xff805781
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
private final List<Integer> mColors;
|
|
||||||
private final Random mRandom;
|
|
||||||
|
|
||||||
public static ColorGenerator create(List<Integer> colorList) {
|
|
||||||
return new ColorGenerator(colorList);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ColorGenerator(List<Integer> colorList) {
|
|
||||||
mColors = colorList;
|
|
||||||
mRandom = new Random(System.currentTimeMillis());
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRandomColor() {
|
|
||||||
return mColors.get(mRandom.nextInt(mColors.size()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getColor(Object key) {
|
|
||||||
return mColors.get(Math.abs(key.hashCode()) % mColors.size());
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user