2016-11-10 3 views
1

画像を含むビューページャーで作業しています。ビューページャに2つのオプションを実装しました。ユーザーは画像をスクロールすることができ、画像も自動的にスクロールします。今問題は、相互に作用する機能の両方です。アクティビティの開始時に自動スクロールが開始されますが、手動でスクロールさせてビューページャの4番目の画像に到達させると、自動スクロール機能が2番目のビューページャに戻ります。画像の手動スライドと一緒にビューページャーでオートスクロールを使用する方法

手動でスクロールして3番目の位置に到達した場合、自動スクロールは3番目の位置から開始し、4番目の位置に移動する必要があります。

マニュアルスクロールのための私のコードは次のとおりです。

_mViewPager = (ViewPager) view.findViewById(R.id.imageviewPager); 

_adapter = new ImageViewPagerAdapter(getActivity(), list); 
_mViewPager.setAdapter(_adapter); 
_mViewPager.setCurrentItem(0, true); 
mIndicator.setViewPager(_mViewPager); 


    mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
      // Toast.makeText(getActivity(), "Scroller is called 1: " + item_count, Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onPageSelected(int position) { 
      // Toast.makeText(getActivity(), "Scroller is called 2", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
      // Toast.makeText(getActivity(), "Scroller is called 3", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

や画像の自動スクロールのためのコードは、私がループロジックを作るためのハンドラを使用している、以下の通りです。

handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      _mViewPager.setCurrentItem(item_count); 
      sizeOfImages = globals.getImagesUrl().size(); 

      if (item_count == sizeOfImages) { 
       reverse = 1; 
       item_count--; 
      } else { 
       if (reverse == 0) { 
        item_count++; 
       } else { 
        item_count--; 
        if (item_count == 0) { 
         reverse = 0; 
        } 
       } 
      } 

      handler.postDelayed(this, 3000); 
     } 
    }, 3000); 

助けてください。

+0

このライブラリを使用していただきありがとうございます。目的の動作に応じて、現在の方向に基づいて1を加算または減算する必要があります。 –

+0

私はすでにそれを試しましたが、それはさらに、私の仕事は、このロジックを実装した場合、さらに複雑になりましたitem_countは2回増分されました.1つは手動スライドで、もう1つは自動スライドで –

+0

ここで 'item_count'をインクリメントしないでください。それを 'position':' item_count = position; 'に設定します。 –

答えて

0
mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     // Toast.makeText(getActivity(), "Scroller is called 1: " + item_count, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onPageSelected(int position) { 
     // Toast.makeText(getActivity(), "Scroller is called 2", Toast.LENGTH_SHORT).show(); 
     **add this line in listener** 
     mViewPager.setCurrentItem(position, true); 
    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 
     // Toast.makeText(getActivity(), "Scroller is called 3", Toast.LENGTH_SHORT).show(); 
    } 
}); 

またはあなたが ``)(onPageSelectedに `item_count`を設定する必要が

https://github.com/linsea/AndroidImageSlider

+0

私は試しましたが、以前と同じように動作していませんでした。( –

+0

デモやチュートリアルを手伝ってもらえますか? –

+0

https://github.com/linsea/AndroidImageSlider –

関連する問題