android - 在 ViewPager 中实现弹性/弹跳动画效果的最佳方法是什么?

标签 android android-fragments android-viewpager android-animation android-pagetransformer

<分区>

我想显示一个 ViewPager具有弹跳/弹性滑动效果。我想这可以使用 PageTransformer 的某种组合来实现和一个 BounceInterpolator .

我不知道的是如何。到目前为止,我无法做到这一点。

PageTransformer 的典型示例如下所示:

public class TypicalPageTransformer implements ViewPager.PageTransformer {

    @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);
            view.setTranslationX(0);
            view.setScaleX(1);
            view.setScaleY(1);

        } else if (position <= 1) { // (0,1]
            // Fade the page out.
            view.setAlpha(1 - position);

            // Counteract the default slide transition
            view.setTranslationX(pageWidth * -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);
        }
    }
}

问题是,我们如何带来 Interpolator (任何一种)到这里的图片? 我们从哪里得到Animation ViewPager 动画的对象,以便为其设置一个 Interpolator

我已经引用了以下帖子:

第三篇文章的答案提到了这种方法,但没有提供任何细节。

有谁知道我们如何将 BounceInterpolatorPageTransformer 结合起来?这似乎是解决这个问题的有机且连贯的方法,但它有可能吗?还是对此有另一种合乎逻辑的解决方案?

引用资料:

注意:

应该可以简单地通过组合 InterpolatorPageTransformer 来实现弹性/弹跳动画效果,而无需扩展ViewPager。其他方法也欢迎,但请提供详细的代码解决方案,而不仅仅是大纲。

最佳答案

我不确定 PageTransformer 是实现上述效果的最佳方式。请注意,这种转换在两个滑动方向上都是相同的,因为接收到的位置并不知道我们是从左向右滑动还是从左向右滑动。并且您可能不希望 View 的两个相对侧弹跳,而只想要应用拉力的一个。其次,IMO 更重要的是,PageTransformer 框架是由用户的手势驱动的,而不是由稳定的系统时钟驱动的。结果 - 我们无法控制淡入淡出阶段(用户松开手指时的阶段)的持续时间并实现平滑的行为(因为通常滴答是在非单调变化的位置传递的,这在很大程度上取决于触摸速度)。

因此,最好使用标准的 ValueAnimator API,它将由 OnPageChangeListener 触发。当然,在这种情况下,我们还有另一个警告,但这种方法似乎更有希望。

关于android - 在 ViewPager 中实现弹性/弹跳动画效果的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37561357/

相关文章:

Android M - 应用程序链接在 Chrome 中不起作用

android - 项目级或全局 build.gradle 中的通用 gradle 配置

android - 上下文菜单不适用于两个 fragment

安卓 fragment : Lifecycle method *always* called when fragment is displayed?

android - 如何在android应用程序的后台进行调用

android - 错误 :Execution failed for task ':agendacalendar:compileDebugJavaWithJavac' . > 编译失败;

android - Viewpager 和 Tab 的滚动问题

android - ViewPager 不会立即更新 textview 字体大小

java - Android ViewPager 类动画

java - Android如何在标签更改时停止刷新 fragment