首先分享几个github上面比较好的第三方框架
compile "com.github.bumptech.glide:glide:3.7.0" glide 图片处理框架
compile 'com.zxy.android:recovery:0.0.8' 异常处理框架比较好
compile 'com.facebook.fresco:fresco:0.12.0' 又一个 图片处理框架
compile 'com.youth.banner:banner:+' 图片轮播框架
1.本地图片轮播
xml文件
<com.youth.banner.Banner xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="200dp"
app:indicator_drawable_selected="@drawable/selected_radius"/>
banner = (Banner) findViewById(R.id.banner);
//本地图片数据(资源文件)
List<Integer> list=new ArrayList<>();
list.add(R.mipmap.b1);
list.add(R.mipmap.b2);
list.add(R.mipmap.b3);
banner.setImages(list)
.setImageLoader(new GlideImageLoader())
.start();
public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
//具体方法内容自己去选择,次方法是为了减少banner过多的依赖第三方包,所以将这个权限开放给使用者去选择
Glide.with(context.getApplicationContext())
.load(path)
.crossFade()
.into(imageView);
}
}
2.网络获取图片进行轮播附带点击事件,链接自己去配置,很简单,就不写了
String[] urls = getResources().getStringArray(R.array.url);
String[] tips = getResources().getStringArray(R.array.title);
List list = Arrays.asList(urls);
images = new ArrayList(list);
List list1 = Arrays.asList(tips);
titles= new ArrayList(list1);
banner.setImages(images)
.setImageLoader(new GlideImageLoader())
.setOnBannerListener(this)
.start();
banner.setBannerAnimation();
外加全部动画效果
DefaultTransformer.class); AccordionTransformer.class); BackgroundToForegroundTransformer.class ForegroundToBackgroundTransformer.class CubeInTransformer.class); CubeOutTransformer.class); DepthPageTransformer.class); FlipHorizontalTransformer.class); FlipVerticalTransformer.class); RotateDownTransformer.class); RotateUpTransformer.class); ScaleInOutTransformer.class); StackTransformer.class); TabletTransformer.class); ZoomInTransformer.class); ZoomOutTranformer.class); ZoomOutSlideTransformer.class);
设置样式和标题//默认是CIRCLE_INDICATOR banner.setImages(images) .setBannerTitles(titles) //添加标题 .setBannerStyle(BannerConfig.NOT_INDICATOR) //展示样式 .setImageLoader(new GlideImageLoader()) .start();
各种样式如下BannerConfig.NOT_INDICATOR); BannerConfig.CIRCLE_INDICATOR); BannerConfig.NUM_INDICATOR); BannerConfig.NUM_INDICATOR_TITLE); BannerConfig.CIRCLE_INDICATOR_TITLE); BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE)
样式的位置,分别是左,中,右banner.setIndicatorGravity(BannerConfig.LEFT);
更好的体验//如果你需要考虑更好的体验,可以这么操作 @Override protected void onStart() { super.onStart(); //开始轮播 banner.startAutoPlay(); } @Override protected void onStop() { super.onStop(); //结束轮播 banner.stopAutoPlay(); }
很好理解,说多也不多