package in.srain.cube.image.drawable;
import android.graphics.*;
import android.graphics.drawable.Drawable;
public class TextDrawable extends Drawable {
private final String mText;
private final Paint mPaint;
private int mBackgroundColor = 0xfff1f1f1;
private int mTextColor = Color.BLACK;
private float mX = 0;
private float mY = 0;
private float mTextSize = 40;
public TextDrawable(String text) {
this.mText = text;
mPaint = new Paint();
mPaint.setTextSize(mTextSize);
mPaint.setAntiAlias(true);
setUp();
}
public void setTextSize(float size) {
if (mTextSize != size) {
mTextSize = size;
setUp();
}
}
private void setUp() {
float width = mPaint.measureText(mText);
float height = mPaint.descent() + mPaint.ascent();
mX = (getBounds().width() - width) / 2;
mY = (getBounds().height() - height) / 2;
}
@Override
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
setUp();
}
@Override
public void draw(Canvas canvas) {
mPaint.setColor(mBackgroundColor);
canvas.drawRect(getBounds(), mPaint);
mPaint.setColor(mTextColor);
canvas.drawText(mText, mX, mY, mPaint);
}
@Override
public void setAlpha(int alpha) {
mPaint.setAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
mPaint.setColorFilter(cf);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}