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时遇到了哪些特殊问题?您是否无法访问要设置动画的属性?或者您是否能够指定这些属性,但动画无法正确渲染?