diff --git a/res/layout-v16/video_player.xml b/res/layout-v16/video_player.xml
deleted file mode 100644
index b855fca65a..0000000000
--- a/res/layout-v16/video_player.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/layout/video_player.xml b/res/layout/video_player.xml
index 144e0f51ec..8a958bcb94 100644
--- a/res/layout/video_player.xml
+++ b/res/layout/video_player.xml
@@ -1,13 +1,18 @@
-
+
-
+
\ No newline at end of file
diff --git a/src/org/thoughtcrime/securesms/MediaPreviewActivity.java b/src/org/thoughtcrime/securesms/MediaPreviewActivity.java
index 809f8f3e3a..a247bfe493 100644
--- a/src/org/thoughtcrime/securesms/MediaPreviewActivity.java
+++ b/src/org/thoughtcrime/securesms/MediaPreviewActivity.java
@@ -47,6 +47,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
+import org.thoughtcrime.securesms.animation.DepthPageTransformer;
import org.thoughtcrime.securesms.attachments.DatabaseAttachment;
import org.thoughtcrime.securesms.components.viewpager.ExtendedOnPageChangedListener;
import org.thoughtcrime.securesms.database.Address;
@@ -192,6 +193,7 @@ public final class MediaPreviewActivity extends PassphraseRequiredActionBarActiv
private void initializeViews() {
mediaPager = findViewById(R.id.media_pager);
mediaPager.setOffscreenPageLimit(1);
+ mediaPager.setPageTransformer(true, new DepthPageTransformer());
viewPagerListener = new ViewPagerListener();
mediaPager.addOnPageChangeListener(viewPagerListener);
diff --git a/src/org/thoughtcrime/securesms/animation/DepthPageTransformer.java b/src/org/thoughtcrime/securesms/animation/DepthPageTransformer.java
new file mode 100644
index 0000000000..da935281b3
--- /dev/null
+++ b/src/org/thoughtcrime/securesms/animation/DepthPageTransformer.java
@@ -0,0 +1,40 @@
+package org.thoughtcrime.securesms.animation;
+
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.viewpager.widget.ViewPager;
+
+/**
+ * Based on https://developer.android.com/training/animation/screen-slide#depth-page
+ */
+public final class DepthPageTransformer implements ViewPager.PageTransformer {
+ private static final float MIN_SCALE = 0.75f;
+
+ public void transformPage(@NonNull View view, float position) {
+ final int pageWidth = view.getWidth();
+
+ if (position < -1f) {
+ view.setAlpha(0f);
+
+ } else if (position <= 0f) {
+ view.setAlpha(1f);
+ view.setTranslationX(0f);
+ view.setScaleX(1f);
+ view.setScaleY(1f);
+
+ } else if (position <= 1f) {
+ view.setAlpha(1f - position);
+
+ view.setTranslationX(pageWidth * -position);
+
+ final float scaleFactor = MIN_SCALE + (1f - MIN_SCALE) * (1f - Math.abs(position));
+
+ view.setScaleX(scaleFactor);
+ view.setScaleY(scaleFactor);
+
+ } else {
+ view.setAlpha(0f);
+ }
+ }
+}