ViewPager翻页,下标,循环播放

来源:互联网 发布:互联网大数据优点 编辑:程序博客网 时间:2024/04/30 23:25
package com.example.viewpagerdemo2;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.Log;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class MainActivity extends Activity implements OnPageChangeListener{    private ViewPager viewPager;    private List<ImageView> list;    private LinearLayout layout;    private TextView tv;    private String[] strs;    private int privious;    private boolean isLoop=false;    private Handler handler=new Handler(){        public void handleMessage(Message msg) {            if(msg.what==0){                viewPager.setCurrentItem(viewPager.getCurrentItem()+1);            }        };    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化视图        initView();        //初始化数据        initDatas();        //初始化适配器,控制层        initAdapter();        //循环播放        loopPlay();    }    private void loopPlay() {        isLoop=true;        new Thread(){            public void run() {                try {                    while(isLoop){                        Thread.sleep(2000);                        Message msg=Message.obtain();                        msg.what=0;                        handler.sendMessage(msg);                        Log.d("PAGER", "viewPagernum"+viewPager.getCurrentItem());                    }                } catch (InterruptedException e) {                    e.printStackTrace();                }            };        }.start();    }    private void initView() {        viewPager = (ViewPager) findViewById(R.id.viewpager);        tv = (TextView) findViewById(R.id.tv);    }    private void initDatas() {        //初始化ViewPager需要的图片数组和TextView数据数据        int[] images=new int[]{R.drawable.num_one,R.drawable.num_two,R.drawable.num_three                ,R.drawable.num_four,R.drawable.num_five};        strs = new String[]{"第一页","第二页","第三页","第四页","第五页"};        //把VipewPager中需要的图片用ImageView创建,然后添加到list集合中。        ImageView imageView;        list = new ArrayList<ImageView>();        for(int i=0;i<images.length;i++){            imageView=new ImageView(this);            imageView.setBackgroundResource(images[i]);            list.add(imageView);            //创建下标小白点,然后用LinearLayout作为父容器,把5个小白点加进去            View view=new View(this);            view.setBackgroundResource(R.drawable.shape_point_disable);            LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(5, 5);            if(i!=0){                lp.leftMargin=10;            }            layout = (LinearLayout) findViewById(R.id.layout_point);            layout.addView(view,lp);        }    }    private void initAdapter() {        //设置小白点的默认位置0是选中状态的白点。        layout.getChildAt(0).setBackgroundResource(R.drawable.shape_point_enable);        tv.setText("第一页");        viewPager.setAdapter(new MyPagerAdapter());        //设置监听        viewPager.setOnPageChangeListener(this);        //把当前位置放在一个可靠的位置,如果从0开始的话,一开始就不能向左滑动了        viewPager.setCurrentItem(1000000);    }    class MyPagerAdapter extends PagerAdapter{        //设置最大值,        @Override        public int getCount() {            // TODO Auto-generated method stub            return Integer.MAX_VALUE;        }        //默认写法,判断是否复用。        @Override        public boolean isViewFromObject(View view, Object obj) {            // TODO Auto-generated method stub            return view==obj;        }        //初始化条目        //container:父容器        //position:当前位置        @Override        public Object instantiateItem(ViewGroup container, int position) {            int num=position%list.size();            ImageView imageView=list.get(num);            container.addView(imageView);            return imageView;        }        //销毁条目        //container:父容器        //object:代表当前的View对象,如果需要销毁的话,就调用父容器的removeView()方法销毁这个object对象。        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View)object);        }    }    //以下三个是ViewPager的onPageChangedListener监听需要实现的方法。    //这个方法是滑动状态改变时调用,当手指点击和松开屏幕的时候都会调用    @Override    public void onPageScrollStateChanged(int arg0) {    }    //滚动的时候调用,从开始滑动到结束滑动一直被多次调用,中间会夹杂着反弹动画期间也会被调用    @Override    public void onPageScrolled(int arg0, float arg1, int arg2) {    }    //ViewPager翻页结束,页面稳定之后被调用    @Override    public void onPageSelected(int position) {        int num=position%list.size();        tv.setText(strs[num]);        layout.getChildAt(num).setBackgroundResource(R.drawable.shape_point_enable);        layout.getChildAt(privious).setBackgroundResource(R.drawable.shape_point_disable);        privious=num;    }    //之前死循环中的标识,别忘记在Activity销毁后跟着销毁,否则之前的死循环会一直循环下去。    @Override    protected void onDestroy() {        isLoop=false;        super.onDestroy();    }}
0 0
原创粉丝点击