package org.thoughtcrime.securesms.components.emoji; import android.graphics.Paint; import android.graphics.Paint.FontMetricsInt; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.widget.TextView; import org.thoughtcrime.securesms.R; public class EmojiSpan extends AnimatingImageSpan { private final int size; private final FontMetricsInt fm; public EmojiSpan(@NonNull Drawable drawable, @NonNull TextView tv) { super(drawable, tv); fm = tv.getPaint().getFontMetricsInt(); size = fm != null ? Math.abs(fm.descent) + Math.abs(fm.ascent) : tv.getResources().getDimensionPixelSize(R.dimen.conversation_item_body_text_size); getDrawable().setBounds(0, 0, size, size); } @Override public int getSize(Paint paint, CharSequence text, int start, int end, FontMetricsInt fm) { if (fm != null && this.fm != null) { fm.ascent = this.fm.ascent; fm.descent = this.fm.descent; fm.top = this.fm.top; fm.bottom = this.fm.bottom; return size; } else { return super.getSize(paint, text, start, end, fm); } } }