Add vertical spacing to emoji sprites

Downsampling on low-dpi devices led to 1px bleeds between
sprite areas.

Fixes #3203
Closes #3206
// FREEBIE
This commit is contained in:
Jake McGinty 2015-05-20 16:16:27 -07:00 committed by Moxie Marlinspike
parent bc164ef549
commit 7ecc58095b
6 changed files with 8 additions and 5 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 436 KiB

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 511 KiB

After

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 315 KiB

View File

@ -50,11 +50,13 @@ public class EmojiProvider {
public static final double EMOJI_SMALL = 0.50;
public static final int EMOJI_RAW_HEIGHT = 128;
public static final int EMOJI_RAW_WIDTH = 136;
public static final int EMOJI_VERT_PAD = 8;
public static final int EMOJI_PER_ROW = 15;
private final Context context;
private final double drawWidth;
private final double drawHeight;
private final double verticalPad;
private final Handler handler = new Handler(Looper.getMainLooper());
public static EmojiProvider getInstance(Context context) {
@ -74,6 +76,7 @@ public class EmojiProvider {
this.context = context.getApplicationContext();
this.drawHeight = context.getResources().getDimension(R.dimen.emoji_drawer_size);
this.drawWidth = drawHeight * ((double)EMOJI_RAW_WIDTH) / EMOJI_RAW_HEIGHT;
this.verticalPad = EMOJI_VERT_PAD * drawHeight / EMOJI_RAW_HEIGHT;
Log.w(TAG, "draw size: " + drawWidth + "x" + drawHeight);
for (int i = 0; i < pages.length; i++) {
final EmojiPageBitmap page = new EmojiPageBitmap(i);
@ -156,9 +159,9 @@ public class EmojiProvider {
canvas.drawBitmap(bmp,
new Rect((int)(row_index * width),
(int)(row * height),
(int)(row * height + row * verticalPad),
(int)((row_index + 1) * width),
(int)((row + 1) * height)),
(int)((row + 1) * height + row * verticalPad)),
b,
paint);
}