package com.amulyakhare.td.sample.sample; import android.content.Context; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Typeface; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.InsetDrawable; import android.graphics.drawable.LayerDrawable; import android.util.TypedValue; import com.amulyakhare.textdrawable.TextDrawable; import com.amulyakhare.textdrawable.util.ColorGenerator; /** * @author amulya * @datetime 17 Oct 2014, 4:02 PM */ public class DrawableProvider { public static final int SAMPLE_RECT = 1; public static final int SAMPLE_ROUND_RECT = 2; public static final int SAMPLE_ROUND = 3; public static final int SAMPLE_RECT_BORDER = 4; public static final int SAMPLE_ROUND_RECT_BORDER = 5; public static final int SAMPLE_ROUND_BORDER = 6; public static final int SAMPLE_MULTIPLE_LETTERS = 7; public static final int SAMPLE_FONT = 8; public static final int SAMPLE_SIZE = 9; public static final int SAMPLE_ANIMATION = 10; public static final int SAMPLE_MISC = 11; private final ColorGenerator mGenerator; private final Context mContext; public DrawableProvider(Context context) { mGenerator = ColorGenerator.DEFAULT; mContext = context; } public TextDrawable getRect(String text) { return TextDrawable.builder() .buildRect(text, mGenerator.getColor(text)); } public TextDrawable getRound(String text) { return TextDrawable.builder() .buildRound(text, mGenerator.getColor(text)); } public TextDrawable getRoundRect(String text) { return TextDrawable.builder() .buildRoundRect(text, mGenerator.getColor(text), toPx(10)); } public TextDrawable getRectWithBorder(String text) { return TextDrawable.builder() .beginConfig() .withBorder(toPx(2)) .endConfig() .buildRect(text, mGenerator.getColor(text)); } public TextDrawable getRoundWithBorder(String text) { return TextDrawable.builder() .beginConfig() .withBorder(toPx(2)) .endConfig() .buildRound(text, mGenerator.getColor(text)); } public TextDrawable getRoundRectWithBorder(String text) { return TextDrawable.builder() .beginConfig() .withBorder(toPx(2)) .endConfig() .buildRoundRect(text, mGenerator.getColor(text), toPx(10)); } public TextDrawable getRectWithMultiLetter() { String text = "AK"; return TextDrawable.builder() .beginConfig() .fontSize(toPx(20)) .toUpperCase() .endConfig() .buildRect(text, mGenerator.getColor(text)); } public TextDrawable getRoundWithCustomFont() { String text = "Bold"; return TextDrawable.builder() .beginConfig() .useFont(Typeface.DEFAULT) .fontSize(toPx(15)) .textColor(0xfff58559) .bold() .endConfig() .buildRect(text, Color.DKGRAY /*toPx(5)*/); } public Drawable getRectWithCustomSize() { String leftText = "I"; String rightText = "J"; TextDrawable.IBuilder builder = TextDrawable.builder() .beginConfig() .width(toPx(29)) .withBorder(toPx(2)) .endConfig() .rect(); TextDrawable left = builder .build(leftText, mGenerator.getColor(leftText)); TextDrawable right = builder .build(rightText, mGenerator.getColor(rightText)); Drawable[] layerList = { new InsetDrawable(left, 0, 0, toPx(31), 0), new InsetDrawable(right, toPx(31), 0, 0, 0) }; return new LayerDrawable(layerList); } public Drawable getRectWithAnimation() { TextDrawable.IBuilder builder = TextDrawable.builder() .rect(); AnimationDrawable animationDrawable = new AnimationDrawable(); for (int i = 10; i > 0; i--) { TextDrawable frame = builder.build(String.valueOf(i), mGenerator.getRandomColor()); animationDrawable.addFrame(frame, 1200); } animationDrawable.setOneShot(false); animationDrawable.start(); return animationDrawable; } public int toPx(int dp) { Resources resources = mContext.getResources(); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, resources.getDisplayMetrics()); } }