以前项目的轮播都是自己写的,虽然也做了封装,但是感觉有点复杂,今天介绍一个简单的轮播框架 banner
使用非常简单:
一、引入项目建立依赖
dependencies { compile 'com.youth.banner:banner:1.4.10' compile 'com.github.bumptech.glide:glide:3.7.0' }我引用了一个加载图片的框架glide
二、清单文件添加相关权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />三、布局文件中添加引入
<com.youth.banner.Banner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="200dp" />
四、重写图片加载器ImageLoader,创建一个类集成ImageLoader
public class GlideImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { /** 注意: 1.图片加载器由自己选择,这里不限制,只是提供几种使用方法 2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器, 传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行 */ //我选择了Glide加载图片 Glide.with(context).load(path).into(imageView); //Picasso 加载图片 //Picasso.with(context).load(path).into(imageView); } }
五、获取数据源(访问接口获取或本地文件), 获取图片放到集合List<string> imgs = new ArrayList();
同样获取标题放到集合List<string> titles = new ArrayList(); 没有标题的话不用构造集合
六、代码中(Activity、Fragment)使用
Banner banner = (Banner) findViewById(R.id.banner); //设置指示器样式 banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR); //设置指示器位置 banner.setIndicatorGravity(BannerConfig.RIGHT); //设置图片加载器 banner.setImageLoader(new GlideImageLoader()); //设置图片集合 banner.setImages(imgs); //设置标题,没有的话不设置 banner.setBannerTitles(titles); //每隔3秒滚动一次 banner.setDelayTime(3000); //banner设置方法全部调用完毕时最后调用 banner.start(); //设置点击监听事件 banner.setOnBannerListener(new OnBannerListener() { @Override public void OnBannerClick(int position) { Toast.makeText(MainActivity.this,"点击了第"+(position+1)+"张图片",Toast.LENGTH_SHORT).show(); } });
到此处就完成了一个轮播的功能,流程很清晰
为了增强体验,可以在onStart()和onStop()方法中开始和结束轮播
@Override protected void onStart() { super.onStart(); //开始轮播 banner.startAutoPlay(); } @Override protected void onStop() { super.onStop(); //结束轮播 banner.stopAutoPlay(); }