首页 > 解决方案 > 如何更改垂直 ViewPager 滑动角度

问题描述

我正在使用VerticalViewPager 垂直滑动图像。垂直视图寻呼机在滑动角度方面是严格的,这意味着只有在完全垂直滑动时才会继续滑动(x 坐标没有变化)。

但我在 Inshorts 应用程序 ( Inshorts ) 中观察到,即使滑动不是完全垂直,它们也允许向上滑动。这使得滑动更顺畅,因为用户可能并不总是进行 100% 完美的滑动。

我们怎样才能做到这一点?

标签: androidandroid-viewpagerandroid-viewpager2

解决方案


您可以使用ViewPager.PageTransformer.

每当滚动可见/附加页面时都会调用 PageTransformer。这为应用程序提供了使用动画属性对页面视图应用自定义转换的机会。

 private class VerticalPageTransformer implements ViewPager.PageTransformer {
        private static final float MIN_SCALE = 0.75f;
        @Override
        public void transformPage(View view, float position) {

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

            }  else if (position <= 0) { // [-1,0]
                // Use the default slide transition when moving to the left page
                view.setAlpha(1);
                // Counteract the default slide transition
                view.setTranslationX(view.getWidth() * -position);

                //set Y position to swipe in from top
                float yPosition = position * view.getHeight();
                view.setTranslationY(yPosition);
                view.setScaleX(1);
                view.setScaleY(1);

            } else if (position <= 1) { // [0,1]
                view.setAlpha(1);

                // Counteract the default slide transition
                view.setTranslationX(view.getWidth() * -position);


                // Scale the page down (between MIN_SCALE and 1)
                float scaleFactor = MIN_SCALE
                        + (1 - MIN_SCALE) * (1 - Math.abs(position));
                view.setScaleX(scaleFactor);
                view.setScaleY(scaleFactor);

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

您可以使用VerticalViewPager


推荐阅读