diff --git a/CHANGELOG.md b/CHANGELOG.md index b56a1ed..53ac5d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ - Fixed #142. +- Added an animation to the viewpager. + - Changed versions handling. **1.5.4.22** diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt index 2b06c18..7e9801e 100644 --- a/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/ReaderActivity.kt @@ -6,6 +6,7 @@ import android.support.v4.app.FragmentStatePagerAdapter import android.support.v7.app.AppCompatActivity import apps.amine.bou.readerforselfoss.api.selfoss.Item import apps.amine.bou.readerforselfoss.fragments.ArticleFragment +import apps.amine.bou.readerforselfoss.transformers.DepthPageTransformer import com.ftinc.scoop.Scoop import kotlinx.android.synthetic.main.activity_reader.* import me.relex.circleindicator.CircleIndicator @@ -26,6 +27,7 @@ class ReaderActivity : AppCompatActivity() { pager.adapter = adapter pager.currentItem = currentItem + pager.setPageTransformer(true, DepthPageTransformer()) (indicator as CircleIndicator).setViewPager(pager) } diff --git a/app/src/main/java/apps/amine/bou/readerforselfoss/transformers/DepthPageTransformer.kt b/app/src/main/java/apps/amine/bou/readerforselfoss/transformers/DepthPageTransformer.kt new file mode 100644 index 0000000..abbcc20 --- /dev/null +++ b/app/src/main/java/apps/amine/bou/readerforselfoss/transformers/DepthPageTransformer.kt @@ -0,0 +1,43 @@ +package apps.amine.bou.readerforselfoss.transformers + +import android.support.v4.view.ViewPager +import android.view.View + +class DepthPageTransformer : ViewPager.PageTransformer { + + override fun transformPage(view: View, position: Float) { + val pageWidth = view.width + + when { + position < -1 -> // [-Infinity,-1) + // This page is way off-screen to the left. + view.alpha = 0F + position <= 0 -> { // [-1,0] + // Use the default slide transition when moving to the left page + view.alpha = 1F + view.translationX = 0F + view.scaleX = 1F + view.scaleY = 1F + } + position <= 1 -> { // (0,1] + // Fade the page out. + view.alpha = 1 - position + + // Counteract the default slide transition + view.translationX = pageWidth * -position + + // Scale the page down (between MIN_SCALE and 1) + val scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position)) + view.scaleX = scaleFactor + view.scaleY = scaleFactor + } + else -> // (1,+Infinity] + // This page is way off-screen to the right. + view.alpha = 0F + } + } + + companion object { + private val MIN_SCALE = 0.75f + } +} \ No newline at end of file