很不错的Android轮播器框架Banner

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhouxianling233/article/details/54839242

写在开头

最近进行开发的时候,经常用到轮播器,开始是自己实现的,但是效果不是很理想,还有点繁琐,最后在网上找到了banner。

使用步骤

第一步
添加依赖(Gradle)

compile 'com.youth.banner:banner:1.4.8'  
compile "com.github.bumptech.glide:glide:3.7.0"//自定义图片加载

第二步
权限(manifest)

//网络加载
<uses-permission android:name="android.permission.INTERNET" />
//本地加载
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

第三步
布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/activity_main"
   android:layout_width="match_parent"
   android:layout_height="match_parent">

        <com.youth.banner.Banner
               android:id="@+id/banner"
               android:layout_width="match_parent"
               android:layout_height="210dp"/>

</RelativeLayout>

第四步
用法

public class MainActivity extends AppCompatActivity {
    private Banner mBanner;
    private List<String> imgUrls = new ArrayList<>();
    private List<String> titles = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgUrls.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic1xjab4j30ci08cjrv.jpg");
        imgUrls.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg");
        imgUrls.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg");
        imgUrls.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg");

        titles.add("图片1");
        titles.add("图片2");
        titles.add("图片3");
        titles.add("图片4");
        init();
    }

    private void init() {
        mBanner = (Banner) findViewById(R.id.banner);
        //设置图片加载器
        mBanner.setImageLoader(new GlideImageLoader());
        //设置图片集合
        mBanner.setImages(imgUrls);
        mBanner.setBannerTitles(titles);
        //设置轮播器样式
        mBanner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
        //设置动画
        mBanner.setBannerAnimation(Transformer.DepthPage);
        //设置自动轮播,默认为true
        mBanner.isAutoPlay(true);
        //设置轮播时间
        mBanner.setDelayTime(3000);
        //设置指示器位置(当banner模式中有指示器时)
        mBanner.setIndicatorGravity(BannerConfig.CENTER);
        //banner设置方法全部调用完毕时最后调用
        mBanner.start();

        //轮播器点击事件
        mBanner.setOnBannerClickListener(new OnBannerClickListener() {
            @Override
            public void OnBannerClick(int position) {
                    Toast.makeText(getApplication(),position+"",Toast.LENGTH_SHORT).show();
            }
        });

    }

    //如果你需要考虑更好的体验,可以这么操作
    @Override
    protected void onStart() {
        super.onStart();
        //开始轮播
        mBanner.startAutoPlay();
    }

    @Override
    protected void onStop() {
        super.onStop();
        //结束轮播
        mBanner.stopAutoPlay();
    }


}

第五步
自定义图片加载

/**
 * @author by Xianling.Zhou on 2017/2/2.
 */
//自定义banner图片加载方式
public class GlideImageLoader extends ImageLoader{
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        Glide.with(context)
                .load(path)
                .into(imageView);
    }
}

最后
轮播器有多种主题,支持很多动画切换,具体自己去看最新文档。

项目地址:https://github.com/youth5201314/banner

猜你喜欢

转载自blog.csdn.net/zhouxianling233/article/details/54839242