您的位置:首页 > 其它

ViewPager无限轮播

2017-08-24 11:47 204 查看
 

 

  ViewPager无限轮播

 MainActivity

public class MainActivity extends Activity {

    //全局变量

    ViewPager vp;

    int[] img={R.drawable.y,R.drawable.ty,R.drawable.c,R.drawable.love,R.drawable.timg};

    List<ImageView> list=new ArrayList<ImageView>();

    private Handler handler;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.viewpager);

        //找控件

      vp= (ViewPager)findViewById(R.id.vp);

       //模拟数据

        for (int id:img) {

           ImageView imageview=new ImageView(this);

            imageview.setBackgroundResource(id);

            list.add(imageview);

        }

        //创建ViewPager适配器

       MyViewPagers adapter=new MyViewPagers();

        vp.setAdapter(adapter);

    }

     //创建viewPager适配器

    public class  MyViewPagers extends PagerAdapter{

         @Override

        public int getCount() {

            //返回Integer.MAX_VALUE集合最大就会无限轮播

            return Integer.MAX_VALUE;

            //返回list.size()集合的长度急就会自动轮播

           // return list.size();

        }

        @Override

        public boolean isViewFromObject(View view, Object object) {

            return view==object;

        }

        @Override

        public Object instantiateItem(ViewGroup container, int position) {

            position %=list.size();

            container.addView(list.get(position));

            return list.get(position);

        }

        @Override

        public void destroyItem(ViewGroup container, int position, Object object) {

           // super.destroyItem(container, position, object);

            container.removeView((View) object);

        }

    }

    //开始轮播的方法

    public void start(){

        //利用 handler发送延迟消息

        handler = new Handler();

        handler.postDelayed(new Runnable() {

            @Override

            public void run() {

                int currentItem = vp.getCurrentItem();

                currentItem++;

                vp.setCurrentItem(currentItem);

                handler.postDelayed(this,2000);

            }

        },2000);

    }

   //停止播放的方法

   //此方法也可省略

    public void stop(){

        handler.removeCallbacksAndMessages(null);

    }

    //获取焦点

    @Override

    protected void onResume() {

        super.onResume();

        //调用开始播放的方法

        start();

    }

    //失去焦点

    //可省略

    @Override

    protected void onPause() {

        super.onPause();

       //调用停止播放的方法

        stop();

    }

}

Layout布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    >

 <android.support.v4.view.ViewPager

     android:id="@+id/vp"

    android:layout_width="match_parent"

     android:layout_height="match_parent"

     ></android.support.v4.view.ViewPager>

</LinearLayout>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: