轮播

来源:互联网 发布:js 拖动 编辑:程序博客网 时间:2024/04/30 12:02

xml代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity" >    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="150dp" />    <LinearLayout        android:layout_alignBottom="@id/vp"        android:id="@+id/lin"        android:layout_centerHorizontal="true"        android:layout_width="wrap_content"        android:layout_height="wrap_content" >    </LinearLayout></RelativeLayout>

适配器

public class MyPagerAdapter extends PagerAdapter {    private List<ImageView> list;    private Context context;    private Handler handler;    public MyPagerAdapter(List<ImageView> list, Context context, Handler handler) {        super();        this.list = list;        this.context = context;        this.handler = handler;    }    @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) {        ImageView image=list.get(position%list.size());        image.setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                switch (event.getAction()) {                case MotionEvent.ACTION_DOWN:                    //按下停止轮播 移除所有的回调和消息                    handler.removeCallbacksAndMessages(null);                    break;                case MotionEvent.ACTION_UP:                    //按下停止轮播 移除所有的回调和消息                    handler.sendEmptyMessageDelayed(0,2000);                    break;                case MotionEvent.ACTION_CANCEL:                    //取消继续轮播                    handler.sendEmptyMessageDelayed(0,2000);                    break;                default:                    break;                }                return true;            }        });        container.addView(image);        return image;    }}

main

public class MainActivity extends Activity {    private ViewPager vp;    private LinearLayout lin;    private List<ImageView> listimage;    private List<ImageView> ldlist;    Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            int item = vp.getCurrentItem();            item++;            vp.setCurrentItem(item);            handler.sendEmptyMessageDelayed(1, 2000);            super.handleMessage(msg);        }    };    private String[] imageUrls = new String[] {            "http://169.254.185.225:8080/banner0.jpg",            "http://169.254.185.225:8080/banner1.jpg",            "http://169.254.185.225:8080/banner2.jpg",            "http://169.254.185.225:8080/banner3.jpg" };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();        // 初始化图片        initImage();        // 初始化小圆点        iniCircle();        // 设置设配器        vp.setAdapter(new MyPagerAdapter(listimage, this,handler));        //设置初始的展示条目        vp.setCurrentItem(listimage.size()*100000);        handler.sendEmptyMessageDelayed(1, 2000);        vp.setOnPageChangeListener(listener);    }    // viewpager 设置滑动监听    OnPageChangeListener listener=new OnPageChangeListener() {        @Override        public void onPageSelected(int arg0) {            for (int i = 0; i < ldlist.size(); i++) {                if (i==arg0%listimage.size()) {                    ldlist.get(i).setImageResource(R.drawable.focuse);                }else{                    ldlist.get(i).setImageResource(R.drawable.normal);                }            }        }        @Override        public void onPageScrolled(int arg0, float arg1, int arg2) {            // TODO Auto-generated method stub        }        @Override        public void onPageScrollStateChanged(int arg0) {            // TODO Auto-generated method stub        }    };    private void initImage() {        listimage = new ArrayList<ImageView>();        BitmapUtils binUtils = new BitmapUtils(this);        for (int i = 0; i < imageUrls.length; i++) {            ImageView image = new ImageView(this);            // 通过工具类将图片设置到控件上            binUtils.display(image, imageUrls[i]);            // 将image添加到集合            listimage.add(image);        }    }    private void iniCircle() {        ldlist = new ArrayList<ImageView>();        for (int i = 0; i < imageUrls.length; i++) {            ImageView image = new ImageView(this);            if (i == 0) {                // 如果是第一张 给一个亮的小点                image.setImageResource(R.drawable.focuse);            } else {                // 如果不是 给暗的小点                image.setImageResource(R.drawable.normal);            }            // 设置小点的默认高度 宽度            LayoutParams params = new LayoutParams(20, 20);            // 设置小点的间距            params.setMargins(5, 0, 5, 0);            lin.addView(image, params);            ldlist.add(image);        }    }    // 初始化控件    private void init() {        vp = (ViewPager) findViewById(R.id.vp);        lin = (LinearLayout) findViewById(R.id.lin);    }}
2 0
原创粉丝点击