通过setCurrentItem方法更改页面(如果按下按钮)时的ViewPager滑动效果

时间:2018-10-05 12:07:19

标签: android android-viewpager

我可以使用ObjectAnimator为viewPager的currentItem属性设置动画吗?我已经尝试了以下代码,但根本无法正常工作。

ObjectAnimator animator= ObjectAnimator.ofInt(viewPager, "currentItem", currentQuestionIndex); animator.setDuration(1000).start();

第三个参数仅仅是整数类型的变量,它跟踪当前页面索引。

我的想法是当用户按下按钮时在viewPager的不同页面上滑动。但我只是无法使它工作:(

我想使从一页到另一页的转换(当按下一个按钮调用setCurrentItem方法时)要慢一些,以便用户可以看到加载的不同页面。

换句话说,我希望页面进行动画处理,就像用户滑动viewPager一样,而不是按下按钮时导致的快速默认动画。

3 个答案:

答案 0 :(得分:0)

您可以使用ViewPager.PageTransformer对页面进行滚动动画处理,有一种方法可以实现此目的:

@Override
public void transformPage(@NotNull View view, float position) {
  //Consider animating view here
  if (position >= -1 && position <= 1) {
      // Animate for current view
  } else {
     // Animate view off the screens
  }
}

用法类似:

viewpager.setPageTransformer(true, [Your view pager transformer here]);

答案 1 :(得分:0)

尝试this example创建自定义ViewPager以减慢页面更改动画的持续时间。

然后在更改页面时使用viewPager.setPageTransformer(true, new SampleTransformation());设置页面更改动画。将SampleTransformation()替换为您选择的one of these PageTransformer个动画。

答案 2 :(得分:0)

正如@wojciech_maciejewski在评论部分中提到的那样,他提供的link在很大程度上解决了这个问题。