图片轮播基本上是所有软件都包含的一个UI模块,很多软件都会添加一个轮播图片来让页面内容变得丰富,界面变得美观。平常我们可以使用ViewPager去自己手动编写一个轮播,不过大多数使用过的人应该都有一种感受,就是代码编写量很多,而且效果差。这里为大家推荐一个第三方开源库banner的使用,进入正题:
- 在build.gradle中添加banner的依赖和图片加载框架Glide依赖
compile 'com.youth.banner:banner:1.4.9' compile 'com.github.bumptech.glide:glide:3.7.0'
- 在布局中引入控件Banner
<com.youth.banner.Banner android:layout_width="match_parent" android:layout_height="128dp" android:id="@+id/banner_recent"></com.youth.banner.Banner>
- 主活动中开始对Banner进行资源添加和属性设置以及事件处理:
- 第一步,获取Banner轮播的图片和文字资源
String[] images= new String[] { "http://www.baidu.com/123.png", "http://www.baidu.com/123.png", "http://www.baidu.com/123.png", "http://www.baidu.com/123.png" }; String[] tips=new String[] { "我的日记", "我的周记", "我的感悟", "我的生活" }; // 加载图片和标题内容 List imageList = new ArrayList(); List titleList = new ArrayList(); for (int i = 0; i < images.length; i++) { imageList.add(images[i]); titleList.add(tips[i]); }
- 第二步,设置图片加载器,使用Glide框架进行图片加载,当然其他的图片加载框架也可以,个人觉得Glide最好用。
mBanner = (Banner) findViewById(R.id.banner_recent); // 设置加载器 mBanner.setImageLoader(new ImageLoader() { @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } });
- 第三步,设置Banner的相关属性,这里通过setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE)设置轮播显示页码和标题,当然也还有其他效果,比如设置为只显示页码、只显示指示器、显示指示器和标题等,所有效果均通过BannerConfig.xxx参数进行设置。
// 设置相关属性 mBanner.setBannerStyle(BannerConfig.NUM_INDICATOR_TITLE);//设置页码与标题 mBanner.setDelayTime(3000);//设置轮播时间 mBanner.setImages(imageList);//设置图片源 mBanner.setBannerTitles(titleList);//设置标题 mBanner.start();
- 第四步,设置Banner的点击事件,如果不需要有轮播图片点击效果的可忽略。
mBanner.setOnBannerListener(this);// 让主活动实现OnBannerListener接口 @Override public void OnBannerClick(int position) { switch (position) { case 0: ToastUtil.toast(getActivity(),titleList.get(0).toString()); break; case 1: ToastUtil.toast(getActivity(),titleList.get(1).toString()); break; case 2: ToastUtil.toast(getActivity(),titleList.get(2).toString()); break; case 3: ToastUtil.toast(getActivity(),titleList.get(3).toString()); break; default: break; } }
- 在第四步中,有一个ToastUtil.toast(getActivity(),titleList.get(0).toString());这是博主自己新建的一个Toast工具类,用来给用户提示的。
public class ToastUtil { private static Toast mToast; public static void toast(Context context, String strings) { if (mToast == null) { mToast = Toast.makeText(context, strings, Toast.LENGTH_SHORT); } else { mToast.setText(strings); } mToast.show(); } }
- 另外,为了更好的体验,可以在主程序中添加如下部分
@Override protected void onStart() { super.onStart(); //开始轮播 banner.startAutoPlay(); } @Override protected void onStop() { super.onStop(); //结束轮播 banner.stopAutoPlay(); }
Banner的整个使用过程就是这样,希望对各位有所帮助。
由于博主文采有限,文章水平也就这样,朋友们请多见谅。