ViewPager自动切换

来源:互联网 发布:大学生网络攻防大赛 编辑:程序博客网 时间:2024/05/22 06:34

1、在布局文件中创建ViewPager

 <android.support.v4.view.ViewPager           android:id="@+id/vp"           android:layout_width="fill_parent"           android:layout_height="fill_parent" />

2、自定ViewPagerAdapter继承PagerAdapter
public class ChoseViewPagerAdapter extends PagerAdapter{

private Context context;private List<ImageView> images;public ChoseViewPagerAdapter(Context context, List<ImageView> images) {    super();    this.context = context;    this.images = images;}@Overridepublic int getCount() {    return images.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {    return arg0==arg1;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {    container.removeView(images.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position) {    container.addView(images.get(position));    return images.get(position);}

}
3、在Activity中的代码
public class ChoseFragment extends Fragment {
private ChoseViewPagerAdapter adapter;
private int[] imageIds={R.drawable.read1,R.drawable.read2,R.drawable.read3,R.drawable.read4,R.drawable.read1};
private ArrayList images;
private int oldPosition = 0;//记录上一次点的位置
private int currentItem; //当前页面
private ScheduledExecutorService scheduledExecutorService;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_chose, container, false);

    initView(view);    initViewPager(view);    return view;}    private void initViewPager(View v) {            images = new ArrayList<ImageView>();              for(int i =0; i < imageIds.length; i++){                  ImageView imageView = new ImageView(getActivity());                  imageView.setBackgroundResource(imageIds[i]);                  images.add(imageView);              }    mViewPager=(ChildViewPager) v.findViewById(R.id.vp_chose_fragment);    adapter=new ChoseViewPagerAdapter(getActivity(), images);    mViewPager.setAdapter(adapter);    mViewPager.setOnPageChangeListener(new OnPageChangeListener() {        @Override        public void onPageSelected(int position) {            tvTitle.setText(titles[position]);            dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal);            dots.get(position).setBackgroundResource(R.drawable.dot_focused);            oldPosition = position;            currentItem = position;        }        @Override        public void onPageScrolled(int arg0, float arg1, int arg2) {        }        @Override        public void onPageScrollStateChanged(int arg0) {        }    });}

@Override
public void onStart() {
super.onStart();

    scheduledExecutorService=Executors.newSingleThreadScheduledExecutor();    //每隔4秒钟切换一张图片    scheduledExecutorService.scheduleWithFixedDelay(new Runnable() {        @Override        public void run() {             currentItem = (currentItem +1) % imageIds.length;                          //更新界面                         handler.obtainMessage().sendToTarget();        }    }, 4, 4, TimeUnit.SECONDS);}private Handler handler=new Handler(){    //设置当前页面    public void handleMessage(Message msg) {        mViewPager.setCurrentItem(currentItem);    };};

0 0