diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java b/src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java index 63b17ab4fd..7c95ade310 100644 --- a/src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java +++ b/src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java @@ -110,11 +110,7 @@ class EmojiProvider { final EmojiDrawable drawable = new EmojiDrawable(drawInfo, decodeScale); drawInfo.getPage().get().addListener(new FutureTaskListener() { @Override public void onSuccess(final Bitmap result) { - Util.runOnMain(new Runnable() { - @Override public void run() { - drawable.setBitmap(result); - } - }); + Util.runOnMain(() -> drawable.setBitmap(result)); } @Override public void onFailure(ExecutionException error) { diff --git a/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java b/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java index 59190dc777..f554eebd7b 100644 --- a/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java +++ b/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java @@ -7,14 +7,14 @@ import android.support.annotation.NonNull; import android.util.Log; import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; -import org.thoughtcrime.securesms.util.BitmapDecodingException; -import org.thoughtcrime.securesms.util.BitmapUtil; +import org.thoughtcrime.securesms.mms.GlideApp; import org.thoughtcrime.securesms.util.ListenableFutureTask; import org.thoughtcrime.securesms.util.Util; import java.io.IOException; import java.lang.ref.SoftReference; import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; public class EmojiPageBitmap { @@ -41,16 +41,14 @@ public class EmojiPageBitmap { } else if (task != null) { return task; } else { - Callable callable = new Callable() { - @Override public Bitmap call() throws Exception { - try { - Log.w(TAG, "loading page " + model.getSprite()); - return loadPage(); - } catch (IOException ioe) { - Log.w(TAG, ioe); - } - return null; + Callable callable = () -> { + try { + Log.w(TAG, "loading page " + model.getSprite()); + return loadPage(); + } catch (IOException ioe) { + Log.w(TAG, ioe); } + return null; }; task = new ListenableFutureTask<>(callable); new AsyncTask() { @@ -71,13 +69,21 @@ public class EmojiPageBitmap { if (bitmapReference != null && bitmapReference.get() != null) return bitmapReference.get(); try { - final Bitmap bitmap = BitmapUtil.createScaledBitmap(context, - "file:///android_asset/" + model.getSprite(), - decodeScale); - bitmapReference = new SoftReference<>(bitmap); + Bitmap originalBitmap = GlideApp.with(context.getApplicationContext()) + .asBitmap() + .load("file:///android_asset/" + model.getSprite()) + .submit() + .get(); + + Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, (int)(originalBitmap.getWidth() * decodeScale), (int)(originalBitmap.getHeight() * decodeScale), false); + + bitmapReference = new SoftReference<>(scaledBitmap); Log.w(TAG, "onPageLoaded(" + model.getSprite() + ")"); - return bitmap; - } catch (BitmapDecodingException e) { + return scaledBitmap; + } catch (InterruptedException e) { + Log.w(TAG, e); + throw new IOException(e); + } catch (ExecutionException e) { Log.w(TAG, e); throw new IOException(e); } diff --git a/src/org/thoughtcrime/securesms/util/BitmapUtil.java b/src/org/thoughtcrime/securesms/util/BitmapUtil.java index 891bae7451..ae6700296a 100644 --- a/src/org/thoughtcrime/securesms/util/BitmapUtil.java +++ b/src/org/thoughtcrime/securesms/util/BitmapUtil.java @@ -15,6 +15,7 @@ import android.support.annotation.WorkerThread; import android.util.Log; import android.util.Pair; +import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.DownsampleStrategy; import org.thoughtcrime.securesms.mms.GlideApp; @@ -108,22 +109,6 @@ public class BitmapUtil { } } - @WorkerThread - public static Bitmap createScaledBitmap(Context context, T model, float scale) - throws BitmapDecodingException - { - try { - return GlideApp.with(context.getApplicationContext()) - .asBitmap() - .load(model) - .sizeMultiplier(scale) - .submit() - .get(); - } catch (InterruptedException | ExecutionException e) { - throw new BitmapDecodingException(e); - } - } - private static BitmapFactory.Options getImageDimensions(InputStream inputStream) throws BitmapDecodingException {