1

ページビューアに問題があります。2秒ごとにページをスクロールしたい。私はこのようなことを試みます:

handler.postDelayed(new Runnable() {
    public void run() {

        viewPager.setCurrentItem(viewPager.getCurrentItem()+1, true);

    } 
},2000);

しかし、それは私が活動を開始したときにのみ機能します。このコードを配置するpublic void onPageSelected(int page)と機能しますが、ページをクリックして手動でスクロールしたときにやりたいのですが、このハンドラーを停止したいのですが、機能しません。どうすればそれができますか?

4

1 に答える 1

10

Runnable と Handler を次のように定義する必要があります。

private boolean pagerMoved = false;
private static final long ANIM_VIEWPAGER_DELAY = 2000;

private Handler h = new Handler();
    private Runnable animateViewPager = new Runnable() {
        public void run() {
            if (!pagerMoved) {
                viewPager.setCurrentItem(viewPager.getCurrentItem()+1, true);
                h.postDelayed(animationFrame, ANIM_VIEWPAGER_DELAY);
            }
        }
    };

onPause および onResume メソッドでセットアップと破棄を行っていることを確認してください

@Override
    public void onPause() {
        super.onPause();
        if (h != null) {
            h.removeCallbacks(animateViewPager);
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        h.postDelayed(animateViewPager, ANIM_VIEWPAGER_DELAY);
    }

最後に、ビューページャーでタッチ イベントをリッスンして、pagerMoved を true に設定できるようにする必要があります (これにより、以降の自動ページ遷移が停止します)。

于 2012-06-01T10:26:53.420 に答える