Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在ViewPager位置偏移更改时设置视图动画_Android_Animation - Fatal编程技术网

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

Android 如何在ViewPager位置偏移更改时设置视图动画,android,animation,Android,Animation,我们想创建一个带有动画的应用程序介绍,用户在页面中滚动,当用户滚动时,一个视图被动画化,并在所有幻灯片中移动。动画视图应随着用户滚动而移动,因此,如果用户滚动得更快,动画视图应移动得更快;如果用户滚动回上一页,动画视图应向后移动 这在iOS中非常简单,但在Android中我找不到这样做的方法 我发现的问题: 动画实时运行;您不能让时间成为ViewPager偏移量 在FragmentPagerAdapter中,不能将一个片段中的视图移动到另一个片段 有什么建议吗?谢谢。这是部分答案。这是第一个

我们想创建一个带有动画的应用程序介绍,用户在页面中滚动,当用户滚动时,一个视图被动画化,并在所有幻灯片中移动。动画视图应随着用户滚动而移动,因此,如果用户滚动得更快,动画视图应移动得更快;如果用户滚动回上一页,动画视图应向后移动

这在iOS中非常简单,但在Android中我找不到这样做的方法

我发现的问题:

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

有什么建议吗?谢谢。

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

  • 动画实时运行;您不能让时间成为ViewPager偏移量
我可以在
ViewPager
OnPageChangeListener
onPageScrolled
方法中更改动画视图的属性

这是一个简单的示例,用于更改动画视图的左边框,使其向右移动

        @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);
        }

然而,第二个问题没有得到解决。当视图到达其所在页面的右侧时,它将消失。换句话说,视图无法移动到下一页(片段)。

对于第二个问题:

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>


看看这个。如果你想“懒洋洋”地跟随滚动,我能理解吗?是的,差不多。在我下面的回答中,我使用
onPageScrolled
位置+位置偏移量
用作“插值点”。这并不是我得出的答案,而是我认为您必须将ViewPager放置在框架布局中,然后将要设置动画的视图放置在ViewPager的顶部。从那时起,您可以继续使用onPageScrolled方法,相应地移动视图。在更改页面时需要移动到vie的不同位置。是否有可用的库?如果我们要上下移动vie怎么办?最好使用
animatedView.setTranslationX(positionOffsetPixels*-1f),一行代码+1@pedro,效果很好,但是如果我想将我的文本视图翻译到第二页而不是第三页,我如何阻止我的视图翻译到其他页面呢。