diff --git a/res/values/dimens.xml b/res/values/dimens.xml
new file mode 100644
index 0000000000..4578c05d79
--- /dev/null
+++ b/res/values/dimens.xml
@@ -0,0 +1,4 @@
+
+
+ 64dip
+
\ No newline at end of file
diff --git a/src/org/thoughtcrime/securesms/util/Emoji.java b/src/org/thoughtcrime/securesms/util/Emoji.java
index 0d40dae26d..145ceb9874 100644
--- a/src/org/thoughtcrime/securesms/util/Emoji.java
+++ b/src/org/thoughtcrime/securesms/util/Emoji.java
@@ -2,6 +2,9 @@ package org.thoughtcrime.securesms.util;
import android.content.Context;
import android.content.SharedPreferences;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.preference.PreferenceManager;
import android.text.Spannable;
@@ -12,6 +15,8 @@ import android.util.Log;
import com.google.thoughtcrimegson.Gson;
import com.google.thoughtcrimegson.reflect.TypeToken;
+import org.thoughtcrime.securesms.R;
+
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Type;
@@ -42,14 +47,16 @@ public class Emoji {
public static final double EMOJI_LARGE = 1;
public static final double EMOJI_SMALL = 0.7;
- private final Context context;
- private final String[] emojiAssets;
- private final Set emojiAssetsSet;
+ private final Context context;
+ private final String[] emojiAssets;
+ private final Set emojiAssetsSet;
+ private final BitmapFactory.Options bitmapOptions;
private Emoji(Context context) {
this.context = context.getApplicationContext();
this.emojiAssets = initializeEmojiAssets();
this.emojiAssetsSet = new HashSet();
+ this.bitmapOptions = initializeBitmapOptions();
Collections.addAll(this.emojiAssetsSet, emojiAssets);
}
@@ -119,7 +126,12 @@ public class Emoji {
private Drawable getEmojiDrawable(String assetName) {
try {
- return Drawable.createFromStream(context.getAssets().open("emoji" + File.separator + assetName), null);
+ Bitmap bitmap = BitmapFactory.decodeStream(context.getAssets().open("emoji" + File.separator + assetName),
+ null, bitmapOptions);
+
+ bitmap = Bitmap.createScaledBitmap(bitmap, 40, 40, true);
+
+ return new BitmapDrawable(context.getResources(), bitmap);
} catch (IOException e) {
throw new AssertionError(e);
}
@@ -134,6 +146,18 @@ public class Emoji {
}
}
+ private BitmapFactory.Options initializeBitmapOptions() {
+ BitmapFactory.Options options = new BitmapFactory.Options();
+
+ options.inScaled = true;
+// options.inDensity = 64;
+ options.inTargetDensity = context.getResources().getDimensionPixelSize(R.dimen.emoji_size);
+ options.inSampleSize = 1;
+ options.inJustDecodeBounds = false;
+
+ return options;
+ }
+
private static class EmojiLRU {
private static final String EMOJI_LRU_PREFERENCE = "pref_popular_emoji";