闲着没事 一个简单的轮播图实现

来源:互联网 发布:用java写99乘法表 编辑:程序博客网 时间:2024/05/29 13:23
public class AutoViewPager extends LinearLayout {    private ViewPager vp;    private LinearLayout container;    private LinearLayout.LayoutParams dotParams;    private Timer timer;    public AutoViewPager(Context context, AttributeSet attrs) {        super(context, attrs);        init();    }    private void init(){        inflate(getContext(), R.layout.auto_viewpager_layout,this);        vp= (ViewPager)findViewById(R.id.vp);        container= (LinearLayout) findViewById(R.id.dot_container);        dotParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);        dotParams.leftMargin= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,10,getResources().getDisplayMetrics());        timer=new Timer();        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                for (int i=0;i<dots.size();i++){                    if (position==i){                        dots.get(i).setImageResource(R.drawable.red_dot);                    }else {                        dots.get(i).setImageResource(R.drawable.black_dot);                    }                }            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private List<ImageView>dots=new ArrayList<>();    public void setImages(List<ImageView> images){        vp.setAdapter(new VpAdapter(images));        for (int i=0;i<images.size();i++){            ImageView dot= new ImageView(getContext());            dot.setImageResource(R.drawable.black_dot);            container.addView(dot);            dots.add(dot);            if (i!=0){                dot.setLayoutParams(dotParams);            }        }        timer.schedule(new MTimer(),1000,2000);    }    private class MTimer extends TimerTask{        @Override        public void run() {            Message msg=Message.obtain();            msg.what=1;            mHandler.sendMessage(msg);        }    }    int vpIndex=0;    private Handler mHandler =new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (msg.what==1){                if (vpIndex==7){                    vpIndex=0;                }                vp.setCurrentItem(vpIndex++);            }        }    };    private class VpAdapter extends PagerAdapter{        List<ImageView> imageViews;        public VpAdapter(List<ImageView> imageViews){            this.imageViews=imageViews;        }        @Override        public int getCount() {            return imageViews.size();        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view==object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            container.addView(imageViews.get(position));            return imageViews.get(position);        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView(imageViews.get(position));        }    }}
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <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        android:layout_gravity="bottom"        android:gravity="center"        android:orientation="horizontal"        android:id="@+id/dot_container"        android:layout_width="match_parent"        android:layout_height="20dp">    </LinearLayout></FrameLayout>

很简单的东西 就是一个布局封装的定时任务

0 0
原创粉丝点击