public class NoScrollViewPager extends ViewPager {
// 是否禁止 viewpager 左右滑动
private boolean noScroll = true;
public NoScrollViewPager(Context context) {
super(context);
setScroller();
}
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
setScroller();
}
//去除切换动画
private void setScroller() {
try {
Field scroller = ViewPager.class.getDeclaredField("mScroller");
scroller.setAccessible(true);
scroller.set(this, new Scroller(getContext(), new DecelerateInterpolator()) {
@Override
public void startScroll(int startX, int startY, int dx, int dy, int duration) {
// 去掉滑动时间,实现无动画切换
super.startScroll(startX, startY, dx, dy, 0);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
if (noScroll){
return false;
}else{
return super.onTouchEvent(arg0);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (noScroll){
return false;
}else{
return super.onInterceptTouchEvent(arg0);
}
}
}
禁止滑动的viewpager(去除切换动画)
于 2020-02-24 15:59:33 首次发布