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);
}
}