2013-05-11 13 views
8

Mam problem z pokazem slajdów w przeglądarce Android. Chcę wyświetlić układ strony podglądu po upływie minimalnego okresu. Oto moja próbka kodu. Moje główne klasy:Pokaz slajdów w przeglądarce systemu Android?

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) { 
      } 
     }); 
    } 

} 

Moja klasa adaptera:

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; 
    } 
} 

załóżmy, że chcę, aby auto układu viewpager przesuwne po 10 sekundach. Jak to możliwe.

+0

Możesz sprawdzić ten link http://stackoverflow.com/a/19951862/2987284 dla AutoSlide – Raghu

Odpowiedz

28

użytkowania Handler aby auto slajdów. Oto kod

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); 
    } 
}; 

I nie zapomnij usunąć wywołanie zwrotne onPause()

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

Ponadto, nie zapomnij, aby ponownie uruchomić onResume()

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

Skąd pobrać PositionPagerMoved – androidcodehunter

+0

Nie jest to konieczne w twoim przypadku, edytowałem mój kod. Przepraszam za zamieszanie. – Hein

+0

Także pozycja zawsze zaczyna się od zera i edytuj położenie> = 3. Dzięki. Twój kod działa poprawnie. – androidcodehunter

1

użycie Handler i wysłać [Empty] MessageDelayed/postDelayed i nazywają setCurrentItem na ViewPager

+0

Podaj mi przykładowy kod. – androidcodehunter

Powiązane problemy