From 94fb468742e88abae4690b81fd02dab80f77fc97 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Thu, 5 Jan 2017 22:57:18 +0100 Subject: add overlay to indicate that image is gif --- .../pixart/messenger/persistance/FileBackend.java | 31 +++++++++++++++++---- src/main/res/drawable-hdpi/play_gif.png | Bin 0 -> 1739 bytes src/main/res/drawable-hdpi/play_video.png | Bin 14537 -> 9620 bytes src/main/res/drawable-mdpi/play_gif.png | Bin 0 -> 904 bytes src/main/res/drawable-mdpi/play_video.png | Bin 5208 -> 4450 bytes src/main/res/drawable-xhdpi/play_gif.png | Bin 0 -> 2567 bytes src/main/res/drawable-xhdpi/play_video.png | Bin 23862 -> 12361 bytes src/main/res/drawable-xxhdpi/play_gif.png | Bin 0 -> 5085 bytes src/main/res/drawable-xxhdpi/play_video.png | Bin 47970 -> 24711 bytes src/main/res/drawable-xxxhdpi/play_gif.png | Bin 0 -> 7359 bytes src/main/res/drawable-xxxhdpi/play_video.png | Bin 34505 -> 29246 bytes 11 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 src/main/res/drawable-hdpi/play_gif.png create mode 100644 src/main/res/drawable-mdpi/play_gif.png create mode 100644 src/main/res/drawable-xhdpi/play_gif.png create mode 100644 src/main/res/drawable-xxhdpi/play_gif.png create mode 100644 src/main/res/drawable-xxxhdpi/play_gif.png (limited to 'src') diff --git a/src/main/java/de/pixart/messenger/persistance/FileBackend.java b/src/main/java/de/pixart/messenger/persistance/FileBackend.java index 88e53efd4..c85c2c34a 100644 --- a/src/main/java/de/pixart/messenger/persistance/FileBackend.java +++ b/src/main/java/de/pixart/messenger/persistance/FileBackend.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; +import android.graphics.Paint; import android.graphics.RectF; import android.media.MediaMetadataRetriever; import android.net.Uri; @@ -426,7 +427,8 @@ public class FileBackend { return thumbnail; } DownloadableFile file = getFile(message); - if (file.getMimeType().startsWith("video/")) { + final String mime = file.getMimeType(); + if (mime.startsWith("video/")) { thumbnail = getVideoPreview(file, size); } else { Bitmap fullsize = getFullsizeImagePreview(file, size); @@ -435,6 +437,12 @@ public class FileBackend { } thumbnail = resize(fullsize, size); thumbnail = rotate(thumbnail, getRotation(file)); + if (mime.equals("image/gif")) { + Bitmap withGifOverlay = thumbnail.copy(Bitmap.Config.ARGB_8888, true); + drawOverlay(withGifOverlay, R.drawable.play_gif, 1.0f); + thumbnail.recycle(); + thumbnail = withGifOverlay; + } } this.mXmppConnectionService.getBitmapCache().put(uuid, thumbnail); } @@ -453,6 +461,21 @@ public class FileBackend { } } + private void drawOverlay(Bitmap bitmap, int resource, float factor) { + Bitmap overlay = BitmapFactory.decodeResource(mXmppConnectionService.getResources(), resource); + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setFilterBitmap(true); + paint.setDither(true); + float targetSize = Math.min(canvas.getWidth(), canvas.getHeight()) * factor; + Log.d(Config.LOGTAG, "target size overlay: " + targetSize + " overlay bitmap size was " + overlay.getHeight()); + float left = (canvas.getWidth() - targetSize) / 2.0f; + float top = (canvas.getHeight() - targetSize) / 2.0f; + RectF dst = new RectF(left, top, left + targetSize - 1, top + targetSize - 1); + canvas.drawBitmap(overlay, null, dst, paint); + } + private Bitmap getVideoPreview(File file, int size) { MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever(); Bitmap frame; @@ -465,11 +488,7 @@ public class FileBackend { frame = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); frame.eraseColor(0xff000000); } - Canvas canvas = new Canvas(frame); - Bitmap play = BitmapFactory.decodeResource(mXmppConnectionService.getResources(), R.drawable.play_video); - float x = (frame.getWidth() - play.getWidth()) / 2.0f; - float y = (frame.getHeight() - play.getHeight()) / 2.0f; - canvas.drawBitmap(play, x, y, null); + drawOverlay(frame,R.drawable.play_video,0.75f); return frame; } diff --git a/src/main/res/drawable-hdpi/play_gif.png b/src/main/res/drawable-hdpi/play_gif.png new file mode 100644 index 000000000..e5fe110f0 Binary files /dev/null and b/src/main/res/drawable-hdpi/play_gif.png differ diff --git a/src/main/res/drawable-hdpi/play_video.png b/src/main/res/drawable-hdpi/play_video.png index 76e8f5258..34ed2a7e5 100644 Binary files a/src/main/res/drawable-hdpi/play_video.png and b/src/main/res/drawable-hdpi/play_video.png differ diff --git a/src/main/res/drawable-mdpi/play_gif.png b/src/main/res/drawable-mdpi/play_gif.png new file mode 100644 index 000000000..0d731789e Binary files /dev/null and b/src/main/res/drawable-mdpi/play_gif.png differ diff --git a/src/main/res/drawable-mdpi/play_video.png b/src/main/res/drawable-mdpi/play_video.png index a6fa5185b..a3291b0bb 100644 Binary files a/src/main/res/drawable-mdpi/play_video.png and b/src/main/res/drawable-mdpi/play_video.png differ diff --git a/src/main/res/drawable-xhdpi/play_gif.png b/src/main/res/drawable-xhdpi/play_gif.png new file mode 100644 index 000000000..270d9f719 Binary files /dev/null and b/src/main/res/drawable-xhdpi/play_gif.png differ diff --git a/src/main/res/drawable-xhdpi/play_video.png b/src/main/res/drawable-xhdpi/play_video.png index bdeb15cdf..6c0250b92 100644 Binary files a/src/main/res/drawable-xhdpi/play_video.png and b/src/main/res/drawable-xhdpi/play_video.png differ diff --git a/src/main/res/drawable-xxhdpi/play_gif.png b/src/main/res/drawable-xxhdpi/play_gif.png new file mode 100644 index 000000000..74221d4f9 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/play_gif.png differ diff --git a/src/main/res/drawable-xxhdpi/play_video.png b/src/main/res/drawable-xxhdpi/play_video.png index 2b4d827df..46cad76d6 100644 Binary files a/src/main/res/drawable-xxhdpi/play_video.png and b/src/main/res/drawable-xxhdpi/play_video.png differ diff --git a/src/main/res/drawable-xxxhdpi/play_gif.png b/src/main/res/drawable-xxxhdpi/play_gif.png new file mode 100644 index 000000000..484b93362 Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/play_gif.png differ diff --git a/src/main/res/drawable-xxxhdpi/play_video.png b/src/main/res/drawable-xxxhdpi/play_video.png index 550d48394..8f09ea422 100644 Binary files a/src/main/res/drawable-xxxhdpi/play_video.png and b/src/main/res/drawable-xxxhdpi/play_video.png differ -- cgit v1.2.3