package com.tejia.lijin.app.util;
|
|
import android.graphics.Canvas;
|
import android.graphics.Paint;
|
import android.graphics.Rect;
|
import android.graphics.drawable.Drawable;
|
import android.text.style.ImageSpan;
|
|
/**
|
* Created by weikou2015 on 2017/3/6.
|
*/
|
|
public class VerticalImageSpan1 extends ImageSpan {
|
|
private Drawable drawable;
|
public VerticalImageSpan1(Drawable drawable) {
|
super(drawable);
|
this.drawable=drawable;
|
}
|
|
@Override
|
public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fontMetricsInt) {
|
Drawable drawable = getDrawable();
|
if(drawable==null){
|
drawable= this.drawable;
|
}
|
Rect rect = drawable.getBounds();
|
if (fontMetricsInt != null) {
|
Paint.FontMetricsInt fmPaint = paint.getFontMetricsInt();
|
int fontHeight = fmPaint.bottom - fmPaint.top;
|
int drHeight = rect.bottom - rect.top;
|
|
int top = drHeight / 2 - fontHeight / 4;
|
int bottom = drHeight / 2 + fontHeight / 4;
|
|
fontMetricsInt.ascent = -bottom;
|
fontMetricsInt.top = -bottom;
|
fontMetricsInt.bottom = top;
|
fontMetricsInt.descent = top;
|
}
|
return rect.right;
|
}
|
|
@Override
|
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
|
// image to draw
|
Drawable b = getDrawable();
|
// font metrics of text to be replaced
|
Paint.FontMetricsInt fm = paint.getFontMetricsInt();
|
int transY = (y + fm.descent + y + fm.ascent) / 2
|
- b.getBounds().bottom / 2;
|
|
canvas.save();
|
canvas.translate(x, transY);
|
b.draw(canvas);
|
canvas.restore();
|
}
|
}
|