Mat*_*gan 9 animation android android-fragments android-viewpager
我有一个ViewPager控制五Fragments.当我从Fragment索引1 滑动到Fragment索引0时,我想消除动画中的短暂暂停.
目前,我没有打电话setOffscreenPageLimit(),所以我知道当我处于空闲状态时,Fragment0正在内存中,因为屏幕外页面限制默认为1(当前两侧各一个).ViewPagerFragmentFragment
这是令人困惑的地方.如果我打电话setOffscreenPageLimit(4)给我ViewPager,滑动从1到0动画的暂停消失了 - 动画很流畅.
因此,我得出结论,不知何故,将Fragments2-4 保持在内存中会将动画从Fragment1改为Fragment0.
保留Fragments2-4 如何将滑动动画从Fragment1改为Fragment0?
编辑
我运行了TraceView,onPageScrollStateChanged(int state)用于确定何时开始和停止跟踪,如下所示:
@Override
public void onPageScrollStateChanged(int state) {
if (state == 1 && mViewPager.getCurrentItem() == 1) {
Debug.startMethodTracing("ViewPagerTesting", 100000000);
}
if (state == 0 && mViewPager.getCurrentItem() == 0) {
Debug.stopMethodTracing();
}
}
Run Code Online (Sandbox Code Playgroud)
似乎ViewPager可访问性方法导致UI线程冻结.当我调用setOffscreenPageLimit(4)ViewPager时,这些可访问性方法在追踪中落后 - 花费的时间可以忽略不计.
造成延误的原因是什么?

当你使用它的默认实现时setOffscreenPageLimit(),它只加载它右边的一个片段.例如.当你在索引1上时,它在内存中加载索引2但不在索引0中加载,因此向左滑动必须从头开始生成一个新片段.要测试此理论,您可能需要使用setOffscreenPageLimit(2)然后尝试滑动索引1-> 0.这绝不是最佳解决方案,但有助于消除您对该概念的疑虑.
| 归档时间: |
|
| 查看次数: |
14330 次 |
| 最近记录: |