Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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 我可以使用ViewPager2设置非线性(旧式)动画吗?_Android_Android Recyclerview_Android Viewpager_Android Animation_Android Viewpager2 - Fatal编程技术网

Android 我可以使用ViewPager2设置非线性(旧式)动画吗?

Android 我可以使用ViewPager2设置非线性(旧式)动画吗?,android,android-recyclerview,android-viewpager,android-animation,android-viewpager2,Android,Android Recyclerview,Android Viewpager,Android Animation,Android Viewpager2,我最近用一个ViewPager2替换了我的ViewPager2,但是,与以前的动画更平滑的版本不同,刷页面时的动画似乎是机械的、非线性的。有没有办法把旧的取回?在ViewPager2中自定义动画的标准方法似乎已经完成。不包括插入式替换,但您可以创建自己的转换: class MyPageTransformer : ViewPager2.PageTransformer { override fun transformPage(view: View, position: Float) {

我最近用一个
ViewPager2
替换了我的
ViewPager2
,但是,与以前的动画更平滑的版本不同,刷页面时的动画似乎是机械的、非线性的。有没有办法把旧的取回?

在ViewPager2中自定义动画的标准方法似乎已经完成。不包括插入式替换,但您可以创建自己的转换:

class MyPageTransformer : ViewPager2.PageTransformer {
  override fun transformPage(view: View, position: Float) {
    // position is the offset from center, negative being left
    // make changes to view based on pages position
    // e.g. view.alpha = min(0f, 1f - abs(position))
  }
}

...

viewPager.setPageTransformer(MyPageTransformer())
有关ViewPager2转换,请参见中的示例。

好的,肯定会向您展示如何在代码中实现
viewpager
,但为了在动画中获得更平滑的效果,请尝试实现以下代码

public class ParallaxPageTransformer implements ViewPager.PageTransformer {

        public void transformPage(View view, float position) {

            int pageWidth = view.getWidth();


             if (position < -1) { // [-Infinity,-1)
                    // This page is way off-screen to the left.
                    view.setAlpha(1);

                } else if (position <= 1) { // [-1,1]

                    dummyImageView.setTranslationX(-position * (pageWidth / 2)); //Half the normal speed

                } else { // (1,+Infinity]
                    // This page is way off-screen to the right.
                    view.setAlpha(1);
                }


        }
    }

public类ParallaxPageTransformer实现ViewPager.PageTransformer{
公共页面(视图、浮动位置){
int pageWidth=view.getWidth();
if(位置<-1){/[-无穷大,-1)
//这个页面在屏幕的左边。
视图。setAlpha(1);

}否则如果(position ViewPager2使用PagerSnapHelper设置滑动动画,这是一个私有字段,您不能轻易覆盖它,只能通过反射。我以前看到过这一点,但它并没有解决我的问题!根据Bracadbra的反应,除了使用反射覆盖动画行为或切换到其他选项之外,可能没有其他选项ViewPager2。使用Transformer时遇到了哪些特殊问题?您是否无法访问要设置动画的属性?或者您是否能够指定这些属性,但动画无法正确渲染?