1

4ページあるがあり、ViewPager自動的にスクロールしたい。

私がしていること は、事前に計算された整数であるwhereにviewPager.setCurrentItem(index);バインドされています。TimerTaskindex

ロジックは正常に機能しますが、スクロール(によってトリガーされるsetCurrentImte)すると、アニメーションが速すぎます。

スクロール速度を制御するにはどうすればよいですか?2つの連続したスクロールの間隔ではなく、スクロールアニメーションの速度について話していることに注意してください。

4

4 に答える 4

2

代わりにViewFlipperを使用しないのはなぜですか? ViewFlipper には、ビュー間の自動スクロールを処理する機能が組み込まれています。つまり、タイマーをダンプできます。また、アニメーションを完全に制御できるViewAnimatorを実装しています。カスタム アニメーションの作成は比較的簡単で、アニメーションにかかる時間を制御できます。スライド アニメーションの簡単なチュートリアルは、ここにあります。アニメーション xml ファイルの期間属性に注意してください。

于 2012-11-13T03:48:59.543 に答える
0

ViewPagerはそのような API を提供していないようです。次のいずれかを行うことをお勧めします。

  • VieWPager コード (Your android SDK extras フォルダーの下にあります) を取得し、必要な方法で微調整します (必要な API を追加するなど)。内部定数 ( MAX_SETTLE_DURATION) を使用しているようです。
  • 自分でタッチをインターセプトし、fakeDragBy()を呼び出します (探しているものかどうかはわかりません);
于 2012-11-13T02:37:06.793 に答える
0

このようなことを試してみませんか?値アニメーターを使用してスクロール値をアニメーション化し、配置を更新して、フラグメントの読み込みが正しく処理されるようにします。私にとってはうまくいきます:)。

if(pager != null){
        ValueAnimator scrollAnimator = ValueAnimator.ofInt(pager.getScrollX(), pager.getScrollX()+2560);
        final int virtualPage = pager.getCurrentItem();
        scrollAnimator.setDuration(1000);
        scrollAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                pager.setScrollX((Integer)animation.getAnimatedValue());
            }
        });
        scrollAnimator.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {

            }

            @Override
            public void onAnimationEnd(Animator animation) {
                pager.setCurrentVirtualItem(virtualPage, false);
            }

            @Override
            public void onAnimationCancel(Animator animation) {

            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }
        });
        scrollAnimator.start();
    } 
于 2014-01-17T17:23:20.837 に答える