项目中要用到画廊滑动效果,选择了用ViewPager2的CompositePageTransformer去实现,
val compositePageTransformer = CompositePageTransformer()
compositePageTransformer.addTransformer(MarginPageTransformer(dip2px(20f)))
compositePageTransformer.addTransformer { view, position ->
logger.d("addTransformer() position : " + position)
val r = 1 - Math.abs(position)
view.scaleY = 0.90f + r * 0.1f
}
写完后效果预览没有问题,但是测试发现当频繁调用notifyDataSetChanged后,画廊效果就变形了,当左右滑动下效果又恢复了
解决办法:当ViewPager2的Adapter调用notifyDataSetChanged或者notifyItemChanged的时候ViewPager2调用下:
setCurrentItem
就是:
mViewPager.currentItem = mCurrentPosition