我使用3个片段在viewpager上工作,我也有3个操作栏选项卡。我可以通过单击标签或在标签下方滑动来更改页面。
如果满足以下条件,动画将非常流畅:
但是问题是,当我快速滑动手指时,上一页和下一页之间的过渡会有一定的冻结时间,尽管该时间仅不到1秒。
我只使用普通的viewpager和自定义滚动条来降低动画速度。这是我的代码
主要活动:
viewPager = (ViewPager) findViewById(R.id.pager);
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mAdapter);
viewPager.setOffscreenPageLimit(3);
try {
Field mScroller;
mScroller = ViewPager.class.getDeclaredField("mScroller");
mScroller.setAccessible(true);
myScroller scroller = new myScroller(viewPager.getContext(), new DecelerateInterpolator());
mScroller.set(viewPager, scroller);
} catch (NoSuchFieldException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
我需要帮助以使页面之间的过渡顺利进行,如果可能的话,我宁愿不要使用外部的其他lib(例如:jazzy view pager)。提前致谢
编辑:添加滚动条类
public class myScroller extends Scroller {
private int mDuration = 400;
public myScroller(Context context) {
super(context);
}
public myScroller(Context context, Interpolator interpolator) {
super(context, interpolator);
}
public myScroller(Context context, Interpolator interpolator, boolean flywheel) {
super(context, interpolator, flywheel);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
// Ignore received duration, use fixed one instead
super.startScroll(startX, startY, dx, dy, mDuration);
}
@Override
public void startScroll(int startX, int startY, int dx, int dy) {
// Ignore received duration, use fixed one instead
super.startScroll(startX, startY, dx, dy, mDuration);
}
}
终于我找到了问题,
这是我的旧代码的条件:我有2个带有列表视图的页面。当我滑动它时,我再次在第二页上全部加载列表视图。
当我删除代码以加载所有列表视图时,页面之间的过渡会顺利进行。它似乎先加载列表视图,然后加载动画页面更改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句