如何在ViewPager位置偏移更改时为视图添加animation

我们希望创build一个带有animation的应用程序,其中用户滚动浏览页面,当用户滚动时,一个视图被animation化并通过所有幻灯片。 animation视图应该随着用户滚动而移动,所以如果用户滚动得更快,animation视图应该移动得更快,并且如果用户滚动回到前一页,则animation视图应该向后移动。

在iOS中使用https://github.com/IFTTT/JazzHands这非常简单,但我无法在Android中find这样的方法。

我发现的问题:

  • animation运行实时; 你不能让时间成为ViewPager的偏移量。
  • FragmentPagerAdapter ,一个片段的视图不能移动到另一个片段。

任何build议? 谢谢。

Solutions Collecting From Web of "如何在ViewPager位置偏移更改时为视图添加animation"

对于第二个问题:

viewPagerAdapter将在不再需要视图时销毁视图,以便通过将所有页面添加到包含ViewPager的布局来保持视图可见。

像这样的东西可以工作:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white_transparent" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Text out of view pager" android:textSize="25sp" /> </RelativeLayout> 

这是一个部分的答案。 这是第一个问题。

  • animation实时运行; 你不能让时间成为ViewPager的偏移量。

我可以在onPageScrolledOnPageChangeListeneronPageScrolled方法中更改animation视图的属性。

这是一个简单的例子,它改变了animation视图的左边界,使其向右移动。

  @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { super.onPageScrolled(position, positionOffset, positionOffsetPixels); LayoutParams params = (LayoutParams) animatedView.getLayoutParams(); params.setMargins((int) ((position + positionOffset) * 500), 0, 0, 0); animatedView.setLayoutParams(params); } 

但是第二个问题没有解决。 当视图到达页面的右侧时,它就会消失。 换句话说,视图不能移动到下一个页面(片段)。