简体   繁体   中英

Slideshow in android viewpager?

I have problem with android viewpager slideshow. I want to show the viewpager layout after a minimum time period. Here is my code sample. My main class:

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

}

My Adapter class:

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

suppose that I want to make the viewpager layout auto sliding after 10 seconds. How can it possible.

Use Handler to make it auto slide. Here is some code

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

And don't forget to remove callback onPause()

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

Also, don't forget to rerun onResume()

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

使用Handler并发送[Empty] MessageDelayed / postDelayed并在ViewPager上调用setCurrentItem

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM