使用Android Banner来设置一个轮播图

使用Banner需要引入依赖

 //Banner
    compile 'com.youth.banner:banner:1.4.10'
    //Glide框架
    compile "com.github.bumptech.glide:glide:4.6.1"

首先来设值xml文件

    

其次就是我们的java代码

  /*轮播图*/
    private Banner banner;
   private ArrayList list_path = new ArrayList<>();
    private ArrayList list_title = new ArrayList<>();

这个是用来设置轮播图的标题和图片集合的方法

private void initData() {
        if (inPathImg != null && inPathImg != "") {
            list_path.add(inPathImg);
        } else {
            list_path.add(R.drawable.no_image+"");
        }
        if (outPathImg != null && outPathImg != "") {
            list_path.add(outPathImg);
        } else {
            list_path.add(R.drawable.no_image+"");
        }

        list_title.add("进车图片");
        list_title.add("出车图片");
    }

需要一个刷新图片的类GlideImageLoader .java

public class GlideImageLoader extends ImageLoader {
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        //具体方法内容自己去选择,次方法是为了减少banner过多的依赖第三方包,所以将这个权限开放给使用者去选择
        Glide.with(context.getApplicationContext())
                .load(path)
                .into(imageView);
    }
    @Override
    public ImageView createImageView(Context context) {

       ImageView imageView = new ImageView(context);
        imageView.setMaxWidth(100);
        return imageView;
    }
}

设置banner的初始化方法

 private void initView() {
        banner = (Banner) view.findViewById(R.id.banner1);
        //设置banner样式
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE);
        //设置banner动画效果
        banner.setBannerAnimation(Transformer.DepthPage);
        banner.isAutoPlay(false);
        //设置轮播间隔时间
        banner.setDelayTime(3000);
        banner.setBannerTitles(list_title);
        //简单使用
        banner.setImages(list_path)
                .setImageLoader(new GlideImageLoader())
                .setOnBannerListener(this)
                .start();

    }

然后在onCreateView方法里调用 initView()和initData方法就可以啦~~~
设置轮播图的小圆点 定义适配器等

  /*定义的适配器*/
    public class ViewPagerAdapter extends PagerAdapter {

        @Override
        public int getCount() {
            return images.size();
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0 == arg1;
        }

        @Override
        public void destroyItem(ViewGroup view, int position, Object object) {
            // TODO Auto-generated method stub
//          super.destroyItem(container, position, object);
//          view.removeView(view.getChildAt(position));
//          view.removeViewAt(position);
            view.removeView(images.get(position));
        }

        @Override
        public Object instantiateItem(ViewGroup view, int position) {
            // TODO Auto-generated method stub
            view.addView(images.get(position));
            return images.get(position);
        }
    }


    /**
     * 接收子线程传递过来的数据
     */
    private Handler mHandler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            mViewPaper.setCurrentItem(currentItem);
        }

        ;
    };

    @Override
    public void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        if (scheduledExecutorService != null) {
            scheduledExecutorService.shutdown();
            scheduledExecutorService = null;
        }
    }

也可以给设置的图片设置点击事件

 @Override
    public void OnBannerClick(int position) {

        Toast.makeText(getContext(), "你点了第" + (position + 1) + "张轮播图", Toast.LENGTH_SHORT).show();


    }

你可能感兴趣的:(使用Android Banner来设置一个轮播图)