From 1d76f572f2a2345504c181a0755e7c9ec5566822 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 23 May 2016 23:10:09 +0200 Subject: [PATCH] add depth to scrolling the viewpager --- .../gallery/activities/ViewPagerActivity.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java b/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java index 459c78ca1..36392e9d4 100644 --- a/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java +++ b/app/src/main/java/com/simplemobiletools/gallery/activities/ViewPagerActivity.java @@ -72,6 +72,7 @@ public class ViewPagerActivity extends AppCompatActivity pager.setCurrentItem(pos); pager.addOnPageChangeListener(this); pager.setOnTouchListener(this); + pager.setPageTransformer(true, new DepthPageTransformer()); getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this); updateActionbarTitle(); @@ -376,4 +377,29 @@ public class ViewPagerActivity extends AppCompatActivity super.onPause(); deleteFile(); } + + public class DepthPageTransformer implements ViewPager.PageTransformer { + private static final float MIN_SCALE = 0.75f; + + public void transformPage(View view, float position) { + int pageWidth = view.getWidth(); + + if (position < -1) { + view.setAlpha(0); + } else if (position <= 0) { + view.setAlpha(1); + view.setTranslationX(0); + view.setScaleX(1); + view.setScaleY(1); + } else if (position <= 1) { + view.setAlpha(1 - position); + view.setTranslationX(pageWidth * -position); + float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)); + view.setScaleX(scaleFactor); + view.setScaleY(scaleFactor); + } else { + view.setAlpha(0); + } + } + } }