问题
activity A 中的 banner 到 activity B 中的 viewpager,当 B 滑动后再返回 A,A 中的 banner 还是原先进入 B 的时候的位置,导致图片闪动,体验很不好。
我的解决方法
在 B 的 preFinish 方法中发送一个 Event,A 接受 Event 后让 banner 移动到 B 中的 position
Activity A:
注意这里要延迟一段时间后再 setCurrentItem,否则会影响原先的共享元素的动画,我选择的是 100ms,效果很好。
@Subscribe(threadMode = ThreadMode.MAIN) fun onGalleryActivityExit(galleryActivityExit: GalleryActivityExit) { currentItem = galleryActivityExit.currentItem Http.handler.postDelayed({ banner.setCurrentItem(currentItem + 1, false) banner.indicator.indicatorConfig.currentPosition = currentItem }, 100) }
Activity B:
override fun preFinish(): Boolean { EventBus.getDefault().post(GalleryActivityExit(currentItem)) return true }