居中的ImageSpan
16lz
2021-01-26
import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.drawable.Drawable;import android.support.annotation.NonNull;import android.text.style.ImageSpan;public class CenterAlignImageSpan extends ImageSpan { public CenterAlignImageSpan(Drawable drawable) { super(drawable); } public CenterAlignImageSpan(Bitmap b) { super(b); } @Override public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom,@NonNull Paint paint) { Drawable b = getDrawable(); Paint.FontMetricsInt fm = paint.getFontMetricsInt(); //计算y方向的位移 int transY = (y + fm.descent + y + fm.ascent) / 2 - b.getBounds().bottom / 2; canvas.save(); canvas.translate(x, transY);//绘制图片位移一段距离 b.draw(canvas); canvas.restore(); }}
转载:https://www.jianshu.com/p/191dd6b9af1a
更多相关文章
- Android中textview字体动画
- android.graphics.Canvas类详解
- android 重力感应手机方向
- Android(安卓)Font Metrics
- Android——点击水纹效果
- Android绘图Canvas、Paint
- android刮刮卡效果
- Android关于在Canvas类里的绘制线程问题汇总
- Android绘制进阶之三:在位图上(Bitmap)绘制位图(Bitmap)