ViewPager 슬라이딩 속도 전환

setCurrentItem 방법으로 ViewPager 페이지를 전환할 때 매우 빠르다는 것을 우리는 알고 있다. 그러면 이 속도를 어떻게 바꿔야 하는가.
Google은 공식적으로 속도를 잘못 쓰기 때문에 반사 메커니즘을 통해 수정해야 합니다.
다음에 수정된 코드:
public class FixedSpeedScroller extends Scroller {  
    private int mDuration = 300;  
  
    public FixedSpeedScroller(Context context) {  
        super(context);  
    }  
  
    public FixedSpeedScroller(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);  
    }  
  
    public void setmDuration(int time) {  
        mDuration = time;  
    }  
  
    public int getmDuration() {  
        return mDuration;  
    }  
}  

viewpager를 사용할 때 이 방법을 사용합니다
try {  
           Field field = ViewPager.class.getDeclaredField("mScroller");  
           field.setAccessible(true);  
           FixedSpeedScroller scroller = new FixedSpeedScroller(viewPager.getContext(),  
                   new DecelerateInterpolator());  
           field.set(viewPager, scroller);  
           scroller.setmDuration(2000);  
       } catch (Exception e) {  
       }  

좋은 웹페이지 즐겨찾기