2013-05-11 4 views
8

アンドロイドビューページスライドショーに問題があります。最低限の時間をかけてビューページのレイアウトを表示したい。ここに私のコードサンプルがあります。 私のメインクラス:アンドロイドビューページのスライドショーですか?

public class MainActivity extends Activity { 
    private ViewPager mViewPager; 
    private SwipeAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     // set the adapter 
     adapter = new SwipeAdapter(MainActivity.this); 
     mViewPager.setAdapter(adapter); 

     mViewPager.setOnPageChangeListener(new OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
      } 
      @Override 
      public void onPageScrollStateChanged(int arg0) { 
      } 
     }); 
    } 

} 

マイアダプタクラス:

public class SwipeAdapter extends PagerAdapter { 

    private LayoutInflater mInflater; 
    private static int[] mLayouts = { R.layout.view_layout1, 
      R.layout.view_layout2, R.layout.view_layout3, R.layout.view_layout4 }; 

    SwipeAdapter(Context context) { 
     mInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View) object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     ViewGroup pageView = (ViewGroup) mInflater.inflate(mLayouts[position], 
       container, false); 
     container.addView(pageView); 
     getItemPosition(pageView); 
     return pageView; 
    } 

    @Override 
    public int getCount() { 
     return mLayouts.length; 
    } 
    @Override 
    public boolean isViewFromObject(View view, Object obj) { 
     return view == obj; 
    } 
} 

は、私は10秒後にスライドviewpagerレイアウト自動にしたいと仮定します。どのようにそれが可能です。

+0

を再実行することを忘れないでくださいされますが、このリンクhttpをチェックすることができます/オートスライドのための/stackoverflow.com/a/19951862/2987284 – Raghu

答えて

28

使用HandlerにsetCurrentItemを呼び出します。ここではいくつかのコード

private Handler handler = new Handler(); 
private Runnable runnable = new Runnable() { 
    public void run() { 
      if(position >= 4){ 
       position = 0; 
      }else{ 
       position = position+1; 
      } 
      toBarPager.setCurrentItem(position, true); 
      handler.postDelayed(runnable, 10000); 
    } 
}; 

とコールバックonPause()

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

を削除することを忘れないでください。また、onResume()

@Override 
public void onResume() { 
    super.onResume(); // Always call the superclass method first 
    handler.postDelayed(runnable, 10000); 
} 
+0

positionPagerMovedを取得する場所 – androidcodehunter

+0

あなたのケースでは必要ではありませんが、自分のコードを編集しました。混乱させて申し訳ありません。 – Hein

+0

また、位置は常にゼロから開始し、編集位置> = 3になります。ありがとう。あなたのコードは正常に動作します。 – androidcodehunter

1

使用ハンドラとMessageDelayed/postDelayed [空にする]を送信し、それオートスライド作るためにあなたのViewPager

+0

サンプルコードを提供します。 – androidcodehunter