私は v4 ViewPager を使用しており、以下のリンクに従って、補間器を使用してスクロール速度とスクロール アニメーションを設定できます。
Android での Viewpager コントローラーの速度の低下
このようなコンストラクターで尋ねられたとき、私は線形補間器を使用していました
private void setScroller() {
try {
Field mScroller;
mScroller = ViewPager.class.getDeclaredField("mScroller");
mScroller.setAccessible(true);
FixedSpeedScroller scroller =
new FixedSpeedScroller(this.getContext(), new LinearInterpolator());
mScroller.set(this, scroller);
} catch (NoSuchFieldException e) {
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
}
今、私のビューページには多くのビューのページがあります。その下に、ドットで構成される pagerindicator を追加しました。
O O O O O O O
ドットを押すと、現在のページが SmoothScrolling で設定されます。タッチ イベントを使用して、表示する必要がある適切なページ番号を取得できます。これを知った後、このメソッドを呼び出してスムーズにスクロールします。
public void snapToPage(int whichPage) {
int numperOfSwapsRequired = whichPage - getCurrentPageIndex();
mScrollingDuration *= numperOfSwapsRequired;
if(numperOfSwapsRequired == 0) return;
if(numperOfSwapsRequired > 0) {
for(int i = 0; i<numperOfSwapsRequired; i++){
setCurrentItem(getCurrentItem()+1, true);
}
} else {
for(int i = 0; i>numperOfSwapsRequired; i--){
setCurrentItem(getCurrentItem()-1, true);
}
}
mScrollingDuration = 300;
}
今、すべてがうまくいきます。ただし、選択したページのドットに近いドットを選択した場合のみ。リニアアニメーションでちゃんとスクロールします。
しかし、選択したページのドットに残っているドットを選択すると。スクロールしないでください。スクロールアニメーションなしでページに直接ジャンプするだけです。
だから私はこれを修正する方法が混乱しています。これはインターポレーターまたはスクローラーに関連していますか。
どんな助けでも大歓迎です。
ありがとう