package com.nilhcem.bblfr.core.ui.spannable;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.text.style.ReplacementSpan;
public class CenteredImageSpan extends ReplacementSpan {
private final Drawable mDrawable;
public CenteredImageSpan(final Drawable drawable) {
mDrawable = drawable;
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
}
@Override
public int getSize(final Paint paint, final CharSequence text, final int start, final int end, final Paint.FontMetricsInt fm) {
return mDrawable.getIntrinsicWidth();
}
@Override
public void draw(final Canvas canvas, final CharSequence text, final int start, final int end, final float x, final int top, final int y, final int bottom, final Paint paint) {
final Paint.FontMetrics metrics = paint.getFontMetrics();
final float padding = (metrics.descent - metrics.ascent - mDrawable.getIntrinsicHeight()) / 2f;
final float transY = bottom - mDrawable.getIntrinsicHeight() - padding;
canvas.save();
canvas.translate(x, transY);
mDrawable.draw(canvas);
canvas.restore();
}
}