package cn.androidy.thinking.drawables; import android.content.Context; import android.graphics.PorterDuff; import android.graphics.RectF; import android.graphics.drawable.AnimationDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.RoundRectShape; import android.graphics.drawable.shapes.Shape; /** * Created by Rick Meng on 2015/6/19. */ public class DrawableBuilder { public static ShapeDrawable createRoundedRectDrawable(int color, float radius, float insetWidth) { float[] outerRadii = new float[]{radius, radius, radius, radius, radius, radius, radius, radius}; float[] innerRadii = new float[]{radius, radius, radius, radius, radius, radius, radius, radius}; RectF inset = new RectF(insetWidth, insetWidth, insetWidth, insetWidth); RoundRectShape roundRectShape = new RoundRectShape(outerRadii, inset, innerRadii); ShapeDrawable shapeDrawable = new ShapeDrawable(roundRectShape); shapeDrawable.getPaint().setColor(color); return shapeDrawable; } public static AnimationDrawable createAnimationDrawable(Context context, IDrawableFrame[] drawableResIdArray, boolean oneShot) { AnimationDrawable animationDrawable = new AnimationDrawable(); for (IDrawableFrame frame : drawableResIdArray) { animationDrawable.addFrame(context.getResources().getDrawable(frame.getResId()), frame.getDuration()); } animationDrawable.setOneShot(oneShot); return animationDrawable; } public static interface IDrawableFrame { public int getResId(); public int getDuration(); } public static class SimpleFrame implements IDrawableFrame { private int resid; private int duration; public SimpleFrame(int resid, int duration) { this.duration = duration; this.resid = resid; } @Override public int getResId() { return resid; } @Override public int getDuration() { return duration; } } }