我的ViewPager
中有MainActivity
和浮动操作按钮。 ViewPager
中的每个片段都是6x6 GridLayout
。单击按钮后,我要开始在ImageView
内移动GridLayout
的动画。起始位置和目标位置在列表中已预定义。
mViewPager = findViewById(R.id.pager)
mViewPager.adapter = mSectionsPagerAdapter
mViewPager.currentItem = currentFragment
val fab: View = findViewById(R.id.floatingActionButton)
fab.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View) {
val c = mViewPager.currentItem
val fromView = grid.getChildAt(fromList[c]) as ImageView
val toView = grid.getChildAt(toList[c]) as ImageView
val anim = TranslateAnimation(0f, toView.x - fromView.x, 0f, toView.y - fromView.y).apply {
duration = 500
fillAfter = false
}
fromView.startAnimation(anim)
}
动画可以按预期工作,但是问题在于它只能在首页上工作。当我切换到其他页面并单击按钮时,什么也没有发生。当我回到首页时,也没有任何反应。有人可以解释为什么会这样吗?我如何解决它?谢谢。
答案 0 :(得分:0)
如果您知道应用程序中有多少“页面”,则可以设置 offscreenpagesize 。有时发生的事情是将页面滑离焦点,这些片段的上下文可能会丢失。
viewPage.setOffscreenPageLimit(<number of fragments 'tabs'>);
答案 1 :(得分:0)
如果您有多个页面,请不要使用setOffscreenPageLimit
尝试在每个片段中添加fab.setOnClickListener
。