我可以使用ViewPager2设置非线性(旧样式)动画吗?

问题描述 投票:2回答:2

[我最近用ViewPager替换了ViewPager2,但是,滑动页面时的动画看起来像是自动的并且是非线性的,这与较旧的动画更为流畅的动画不同。有什么办法可以让我把旧的还回来吗?

android android-recyclerview android-viewpager android-animation android-viewpager2
2个回答
0
投票

在ViewPager2中自定义动画的规范方法似乎是通过PageTransformer。没有附带的替代产品,但是您可以创建自己的过渡:

class MyPageTransformer : ViewPager2.PageTransformer {
  override fun transformPage(view: View, position: Float) {
    // position is the offset from center, negative being left
    // make changes to view based on pages position
    // e.g. view.alpha = min(0f, 1f - abs(position))
  }
}

...

viewPager.setPageTransformer(MyPageTransformer())

查看ViewPager2转换的Developer Guide中的示例。


0
投票

好吧,Developer guide肯定会向您展示如何在代码中实现viewpager,但是为了在动画上获得更流畅的效果,请尝试实现以下代码。

public class ParallaxPageTransformer implements ViewPager.PageTransformer {

        public void transformPage(View view, float position) {

            int pageWidth = view.getWidth();


             if (position < -1) { // [-Infinity,-1)
                    // This page is way off-screen to the left.
                    view.setAlpha(1);

                } else if (position <= 1) { // [-1,1]

                    dummyImageView.setTranslationX(-position * (pageWidth / 2)); //Half the normal speed

                } else { // (1,+Infinity]
                    // This page is way off-screen to the right.
                    view.setAlpha(1);
                }


        }
    }

这将为您提供这样的动画:

enter image description here

您也可以通过以下链接,这将为您提供更多帮助:

http://andraskindler.com/blog/2013/create-viewpager-transitions-a-pagertransformer-example/

http://developer.android.com/training/animation/screen-slide.html#pagetransformer

© www.soinside.com 2019 - 2024. All rights reserved.