如何在ViewPager位置偏移更改时为视图设置动画

Fer*_*nch 11 animation android

我们想创建一个带有动画的应用程序介绍,用户可以滚动浏览页面,当用户滚动时,视图会被动画化并遍历所有幻灯片.动画视图应该在用户滚动时移动,因此如果用户滚动得更快,动画视图应该移动得更快,如果用户滚动回到上一页,动画视图应该向后移动.

在iOS中使用https://github.com/IFTTT/JazzHands这非常容易,但我找不到在Android中执行此操作的方法.

我发现的问题:

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

有什么建议吗?谢谢.

Fer*_*nch 5

这是部分答案.这是第一个问题.

  • 动画实时运行; 你不能让时间成为ViewPager的偏移量.

我可以改变动画视图的属性在onPageScrolled的方法OnPageChangeListenerViewPager.

这是一个简单的示例,它会更改动画视图的左边距,使其向右移动.

        @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);
        }
Run Code Online (Sandbox Code Playgroud)

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


Ped*_*ran 4

对于第二个问题:

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>
Run Code Online (Sandbox Code Playgroud)