ViewPager轮播图

来源:互联网 发布:服务器与域名的关系 编辑:程序博客网 时间:2024/06/05 20:20

布局文件:

<RelativeLayout    android:id="@+id/rl_gallery"    android:layout_width="match_parent"    android:layout_height="200dp">    <android.support.v4.view.ViewPager        android:id="@+id/myViewPager"        android:layout_width="match_parent"        android:layout_height="200dp"></android.support.v4.view.ViewPager>    <LinearLayout        android:id="@+id/ll_points"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:orientation="horizontal"        android:layout_centerHorizontal="true"        android:layout_alignParentBottom="true"        android:layout_marginBottom="10dp"        /></RelativeLayout>
页面文件:
public class HomePage extends BaseFragment implements HomePageContract.IHomePageView,        ViewPager.OnPageChangeListener {    @BindView(R.id.ll_points)    LinearLayout llHomePoint;    @BindView(R.id.rl_gallery)    RelativeLayout rlGallery;    private int imgNum = 0;    Context mContext;    //轮播图用到的图片    public static List<ImageView> lists = new ArrayList<ImageView>();    HomePagePresenter presenter;    List<BannerItem> bannerItems;    private int index = 0;    private int currentItem = 0;    @BindView(R.id.myViewPager)    ViewPager myViewPager;    ViewPagerAdapter viewPagerAdapter;    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.home_page, container, false);        ButterKnife.bind(this, view);        mContext = HomePage.this.getActivity();        presenter = new HomePagePresenter();        presenter.attachView(this);        initAllData();        return view;    }    public void initAllData(){        //获取首页banner        HomeBannerListData data = new HomeBannerListData(3);        BjDataBody body = BJServerBodyUtils.getBjDataBody(data,false);//        DialogHelper.showRoundProcessDialog(this.getActivity(), mContext.getString(R.string.data_loading), false);        presenter.getBannerList(HttpConstant.HOME_PAGE,body);    }    public void initGallery() {        lists.clear();        viewPagerAdapter = new ViewPagerAdapter(bannerItems,mContext,llHomePoint);        myViewPager.setAdapter(viewPagerAdapter);        myViewPager.setOnPageChangeListener(this);        myViewPager.setCurrentItem(0);        initPoints();        //每隔3秒自动播放        Timer timer = new Timer();        timer.schedule(task,5000,5000);//        handler.sendEmptyMessageDelayed(3,3000);    }    /**     * 定时器,实现自动播放     */    private TimerTask task = new TimerTask() {        @Override        public void run() {            Message message = new Message();            message.what = 3;            index = myViewPager.getCurrentItem();            index++;            handler.sendMessage(message);        }    };    private Handler handler = new Handler(){        public void handleMessage(Message msg){            super.handleMessage(msg);            switch (msg.what){                case 3:                    myViewPager.setCurrentItem(index);                    break;                default:                    break;            }        }    };    //轮播图的圆点    void initPoints() {        llHomePoint.removeAllViews();        for(int i=0;i<imgNum;i++){            ImageView img = new ImageView(mContext);            LinearLayout.LayoutParams margin = new LinearLayout.LayoutParams(                    LinearLayout.LayoutParams.WRAP_CONTENT,                    LinearLayout.LayoutParams.WRAP_CONTENT);            //设置每个小圆点距离左边的间距            margin.setMargins(20,0,0,0);            img.setLayoutParams(new ViewGroup.LayoutParams(22,22));            if(i==0){                img.setImageResource(R.drawable.icon_home_point_sel);            }else{                img.setImageResource(R.drawable.icon_home_point_nor);            }            llHomePoint.addView(img,margin);        }    }    @Override    public void showBannerList(BannerData data) {        if(data != null){            bannerItems = data.getAdvertlist();            if(bannerItems != null && bannerItems.size() != 0){                bannerItems.addAll(bannerItems);                imgNum = bannerItems.size();                initGallery();            }        }    }    @Override    public void onFailure(Throwable e) {    }    @Override    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {    }    @Override    public void onPageSelected(int position) {        Logger.d("position="+position);//        currentItem = position;        if(position>imgNum-1){            position = position%imgNum;            currentItem = position;        }        for(int i=0;i<imgNum;i++){            if(i == position){//                llHomePoint.getChildAt(i).setBackgroundResource(R.drawable.icon_home_point_sel);                Logger.d("sel"+position);                ((ImageView)llHomePoint.getChildAt(i)).setImageResource(R.drawable.icon_home_point_sel);            }else{//                (llHomePoint.getChildAt(i)).setBackgroundResource(R.drawable.icon_home_point_nor);                Logger.d("normal"+position);                ((ImageView)llHomePoint.getChildAt(i)).setImageResource(R.drawable.icon_home_point_nor);            }        }    }    @Override    public void onPageScrollStateChanged(int state) {    }}

ViewPagerAdapter.java文件:
public class ViewPagerAdapter extends PagerAdapter{    private List<BannerItem> bannerItems;    private Context mContext;    private LinearLayout ll_point;    List<ImageView> imgs = new ArrayList<ImageView>();    public ViewPagerAdapter(List<BannerItem> bannerItems, Context mContext, LinearLayout ll_point) {        this.bannerItems = bannerItems;        this.mContext = mContext;        this.ll_point = ll_point;        for(int i=0;i<bannerItems.size();i++){            ImageView img = new ImageView(mContext);            BannerItem item = bannerItems.get(i);            ImageLoader.getInstance().displayImage(item.getBanner(),img);            img.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));            img.setScaleType(ImageView.ScaleType.FIT_XY);            imgs.add(img);        }    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view == object;    }    public void destroyItem(ViewGroup container,int position,Object object){//        container.removeView(imgs.get(position%imgs.size()));//        if(position >= bannerItems.size()){//            position = position%bannerItems.size();//        }//        container.removeView(imgs.get(position));    }    public Object instantiateItem(ViewGroup container,int position){//        ImageView view = imgs.get(position%imgs.size());        if(position >= bannerItems.size()){            position = position%bannerItems.size();        }        ImageView view = imgs.get(position);        //如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。        ViewParent vp = view.getParent();        if(vp != null){            ViewGroup viewGroup = (ViewGroup) vp;            viewGroup.removeView(view);        }        container.addView(view);        return view;//imgs.get(position%imgs.size());    }}


0 0