zoukankan      html  css  js  c++  java
  • [置顶] viewPager控制滑动速度和时间

    遇到如下问题:viewpager滑动时如果想跳过很多条直接到最后一条,中间会黑屏。黑屏是因为中间的view没有加载出来的缘故。


    stackOverflow上看到的解决方案,在这里记录一下,

    public class FixedScroller extends Scroller {



        private int mDuration = 500;


        public FixedScroller(Context context) {
            super(context);
        }


        public FixedScroller(Context context, Interpolator interpolator) {
            super(context, interpolator);
        }


        @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);
        }

    }

    然后再:

    try {
                Field mScroller;
                mScroller = ViewPager.class.getDeclaredField("mScroller");
                mScroller.setAccessible(true); 
                Interpolator sInterpolator = new AccelerateDecelerateInterpolator();
                FixedScroller scroller = new FixedScroller(viewPager.getContext(), sInterpolator);
                mScroller.set(viewPager, scroller);
            } catch (NoSuchFieldException e) {
            } catch (IllegalArgumentException e) {
            } catch (IllegalAccessException e) {
            }

    住要是设置了滑动的时间间隔和滑动时的拦截器。

    这样滑动就能看到中间的确是有黑屏的。

    最后再在加上:

    @Override
    public void onClick(View v) {
    viewPager.setCurrentItem(3);
    viewPager.setCurrentItem(c_current-1);
    }

    主要因为滑动时,加载3个view,所以给中间让他滑动到中间一次就可以解决这个问题。

  • 相关阅读:
    [LeetCode] 1030. Matrix Cells in Distance Order 距离顺序排列矩阵单元格
    [LeetCode] 1029. Two City Scheduling 两个城市调度
    [LeetCode] 1027. Longest Arithmetic Subsequence 最长的等差数列
    [LeetCode] 1026. Maximum Difference Between Node and Ancestor 结点与其祖先之间的最大差值
    [LeetCode] 1025. Divisor Game 除数游戏
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
    一手遮天 Android
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3310464.html
Copyright © 2011-2022 走看看