gpt4 book ai didi

android - 增加 viewpager smoothscroll 持续时间

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:55:36 28 4
gpt4 key购买 nike

<分区>

我正在使用 ViewPager 子类 MyPager(几乎相同),我使用它的 setCurrentItem(int index, boolean smooth) 方法,smooth 参数设置为 true。它实际上比参数设置为“false”更平滑一些,但我想增加动画持续时间以使过渡更加明显。

我从不同的帖子和 this solution 收集了一些信息看起来很完美。我最终得到了这段代码”

MyPager.java :

public class MyPager extends ViewPager {
public MyPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
postInitViewPager();
}

private ScrollerCustomDuration mScroller = null;

/**
* Override the Scroller instance with our own class so we can change the
* duration
*/
private void postInitViewPager() {
try {
Class<?> viewpager = ViewPager.class;
Field scroller = viewpager.getDeclaredField("mScroller");
scroller.setAccessible(true);
Field interpolator = viewpager.getDeclaredField("sInterpolator");
interpolator.setAccessible(true);

mScroller = new ScrollerCustomDuration(getContext(),
(Interpolator) interpolator.get(null));
scroller.set(this, mScroller);
} catch (Exception e) {
Log.e("MyPager", e.getMessage());
}
}

/**
* Set the factor by which the duration will change
*/
public void setScrollDurationFactor(double scrollFactor) {
mScroller.setScrollDurationFactor(scrollFactor);
}
}

ScrollerCustomDuration.java

public class ScrollerCustomDuration extends Scroller {
private double mScrollFactor = 2;

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

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

public ScrollerCustomDuration(Context context,
Interpolator interpolator, boolean flywheel) {
super(context, interpolator, flywheel);
}

/**
* Set the factor by which the duration will change
*/
public void setScrollDurationFactor(double scrollFactor) {
mScrollFactor = scrollFactor;
}

@Override
public void startScroll(int startX, int startY, int dx, int dy,
int duration) {
super.startScroll(startX, startY, dx, dy,
(int) (duration * mScrollFactor));
}

}

问题是,当运行 scroller.set(this, mScroller); of MyPager 时,我无法摆脱这个异常:

java.lang.IllegalArgumentException: invalid value for field

有什么想法吗?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com