片段幻灯片转换不同步
问题描述:
当用户前进到下一个片段时,我只想让它们滑动,就像使用ViewPager一样。所以我尝试过:片段幻灯片转换不同步
public void replaceFragmentSlide(Fragment newFragment) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Slide slideFromRight = new Slide();
slideFromRight.setSlideEdge(Gravity.END);
Slide slideFromLeft = new Slide();
slideFromLeft.setSlideEdge(Gravity.START);
Fragment oldFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container_detail);
if (oldFragment != null) {
oldFragment.setExitTransition(slideFromLeft);
}
newFragment.setEnterTransition(slideFromRight);
newFragment.setExitTransition(slideFromLeft);
}
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container_detail, newFragment, newFragment.getClass().getName())
.addToBackStack(null)
.commit();
}
视觉效果很奇怪。进入的片段开始快速移动,然后最后放慢速度。现存的片段开始缓慢移动,然后在最后加速。他们应该在任何特定的时刻匹配速度,他们的边界只是在过渡发生时触摸。
我缺少什么?
答
就像我想的那样,答案非常明显,让我变得很愚蠢。
正如我所指出的那样,这两个转换加速和减速的方式不同。这是他们的插入器的结果。所以我需要做的是确保它们都具有相同的插补器。它可以是简单:
slide.setInterpolator(new FastOutSlowInInterpolator());
当两个幻灯片过渡动画具有相同的内插器,他们将在完全相同的速度移动,顺利同步。
我刚开始看这方面,所以我可能会离开基地。在我看来,你需要以某种方式链接两个转换 - 也许通过[TransitionSet](https://developer.android.com/reference/android/transition/TransitionSet.html)或[TransitionManager](https:// developer .android.com /参考/机器人/过渡/ TransitionManager.html)。 – Cheticamp
这个提示让我看到了一些谷歌搜索,给了我一个正确方向的提示。 –