Viewpager的无限轮播

来源:互联网 发布:无备案域名 编辑:程序博客网 时间:2024/04/29 05:20
package com.example.test;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;

public class MainActivity extends Activity {
    private List<View> list;

    private ViewPager vp;


//handler

    private Handler h=new Handler(){
        public void handleMessage(android.os.Message msg) {
            int i = vp.getCurrentItem();
            vp.setCurrentItem(++i);
            h.sendEmptyMessageDelayed(1, 1000);
        };
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        vp=(ViewPager) findViewById(R.id.vp);
        init();
        
        vp.setAdapter(new MyAdapter());
        
        vp.setCurrentItem(Integer.MAX_VALUE/2-Integer.MAX_VALUE/2%list.size());
        
        h.sendEmptyMessageDelayed(1, 1000);
        
    }
    //定义适配器
    class MyAdapter extends PagerAdapter{

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            // TODO Auto-generated method stub
            return arg0==arg1;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            System.out.println(position);
            container.addView(list.get(position%list.size()));
            return list.get(position%list.size());
        }
        
    }
    //加载页面资源
    public void init(){
        list=new ArrayList<View>();
        list.add(View.inflate(this, R.layout.vp1, null));
        list.add(View.inflate(this, R.layout.vp2, null));
        list.add(View.inflate(this, R.layout.vp3, null));
        list.add(View.inflate(this, R.layout.vp4, null));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

0 0