Banner (android 轮播图)

Banner:
Android广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式、动画、轮播和切换时间、位置、图片加载框架等!

导入banner 库:
在AndroidStudio 中添加依赖库
compile ‘com.youth.banner:banner:+’ //banner库
compile ‘com.github.bumptech.glide:glide:3.7.0’ //glide库,网络图片加载

下面使用这个库:

xml 代码:

    <com.youth.banner.Banner
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/banner"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    />

java 代码:

private Banner banner;
banner= (Banner) findViewById(R.id.banner);
private ListView list;  //ListView
List<Class<? extends ViewPager.PageTransformer>> transformers=new ArrayList<>(); //将轮播图的所有效果全放在一个List中来保存,作用于Banner
private List<String> images;
private List<String> bannerStyle; //ListView 上设置Banner的轮播效果文字提示,作用于ListView


public void initView(){
images=new ArrayList<>();
        images.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic1xjab4j30ci08cjrv.jpg");
        images.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg");
        images.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg");
        images.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg");
        images.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg");

//给Banner 设置网络图片 (images)
banner.setImages(images)   
           .setImageLoader(new GlideImageLoader())
           .setOnBannerListener(this)
           .start();
}

bannerStyle=new ArrayList<>();
        bannerStyle.add("DefaultTransformer"); //该List只是为了给ListView 的Item添加文字提示效果
        bannerStyle.add("AccordionTransformer");
        bannerStyle.add("BackgroundToForegroundTransformer");
        bannerStyle.add("ForegroundToBackgroundTransformer");
        bannerStyle.add("CubeInTransformer");
        bannerStyle.add("CubeOutTransformer");
        bannerStyle.add("DepthPageTransformer");
        bannerStyle.add("FlipHorizontalTransformer");
        bannerStyle.add("FlipVerticalTransformer");
        bannerStyle.add("RotateDownTransformer");
        bannerStyle.add("RotateUpTransformer");
        bannerStyle.add("ScaleInOutTransformer");
        bannerStyle.add("StackTransformer");
        bannerStyle.add("TabletTransformer");
        bannerStyle.add("ZoomInTransformer");
        bannerStyle.add("ZoomOutTranformer");
        bannerStyle.add("ZoomOutSlideTransformer");

        list.setAdapter(new MyBaseAdapter());
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {       
                    banner.setBannerAnimation(transformers.get(position));
            //给banner 设置轮播效果的item点击事件  
            }
        });

public void initData(){
        //给transformers 这个List中添加所有轮播图不同样式效果的类
        transformers.add(DefaultTransformer.class);
        transformers.add(AccordionTransformer.class);          transformers.add(BackgroundToForegroundTransformer.class);
        transformers.add(ForegroundToBackgroundTransformer.class);
        transformers.add(CubeInTransformer.class);
        transformers.add(CubeOutTransformer.class);
        transformers.add(DepthPageTransformer.class);
        transformers.add(FlipHorizontalTransformer.class);
        transformers.add(FlipVerticalTransformer.class);
        transformers.add(RotateDownTransformer.class);
        transformers.add(RotateUpTransformer.class);
        transformers.add(ScaleInOutTransformer.class);
        transformers.add(StackTransformer.class);
        transformers.add(TabletTransformer.class);
        transformers.add(ZoomInTransformer.class);
        transformers.add(ZoomOutTranformer.class);
        transformers.add(ZoomOutSlideTransformer.class);
    }


@Override
    public void OnBannerClick(int position) {
        Toast.makeText(getApplicationContext(),"你点击了:"+position,Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onStart() {
        super.onStart();
        //开始轮播
        banner.startAutoPlay();
    }

    @Override
    protected void onStop() {
        super.onStop();
        //结束轮播
        banner.stopAutoPlay();
    }

    class MyBaseAdapter extends BaseAdapter{

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

        @Override
        public Object getItem(int position) {
            return bannerStyle.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view =LayoutInflater.from(MainActivity.this).inflate(R.layout.item,null);
            TextView text= (TextView) view.findViewById(R.id.text);
            text.setText(bannerStyle.get(position));//设置item文字效果
            return view;
        }
    }

然后是GlideImageLoader 这个类

public class GlideImageLoader extends ImageLoader{
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        Glide.with(context.getApplicationContext())
                .load(path)
                .crossFade()
                .into(imageView);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_37094131/article/details/60780470