Banner (android 轮播图)

来源:互联网 发布:淘宝运营助理简历 编辑:程序博客网 时间:2024/05/13 23:50

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;  //ListViewList<Class<? extends ViewPager.PageTransformer>> transformers=new ArrayList<>(); //将轮播图的所有效果全放在一个List中来保存,作用于Bannerprivate List<String> images;private List<String> bannerStyle; //ListView 上设置Banner的轮播效果文字提示,作用于ListViewpublic 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);    }}
0 0
原创粉丝点击