package cn.jiguang.imui.chatinput.emoji; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Looper; /** * Use AndroidEmoji(https://github.com/w446108264/AndroidEmoji) * author: sj */ public class EmojiDrawable extends Drawable { private static final Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG | Paint.ANTI_ALIAS_FLAG); private Bitmap bmp; @Override public void draw(Canvas canvas) { if (bmp == null) { return; } // Bitmap.createScaledBitmap(bmp, width, height, true) canvas.drawBitmap(bmp, null, getBounds(), paint); } public void setBitmap(Bitmap bitmap) { assertMainThread(); if(bitmap == null) { return; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1 && bitmap.sameAs(bmp)){ return; } bmp = bitmap; invalidateSelf(); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } @Override public void setAlpha(int alpha) { } @Override public void setColorFilter(ColorFilter cf) { } public static void assertMainThread() { if (!isMainThread()) { throw new AssertionError("Main-thread assertion failed."); } } public static boolean isMainThread() { return Looper.myLooper() == Looper.getMainLooper(); } }