Android轮播图片

第一步在build.gradle(app)中添加

dependencies {

 //开源轮播控件

    implementation 'com.youth.banner:banner:2.0.7'

    //谷歌官网 recyclerview

    implementation 'androidx.recyclerview:recyclerview:1.1.0'

     //开源图片加载框架 提供图片的缓存

    implementation 'com.github.bumptech.glide:glide:4.11.0'

    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'

}

第二步在AndroidManifest.xml

      
  

第三步 在布局文件中添加Banner,可以设置自定义属性

    

    

第四步 防止运行轮播报错java的1.8的错误,强制指定java的1.8语言

android {

    compileOptions {

        sourceCompatibility JavaVersion.VERSION_1_8

        targetCompatibility JavaVersion.VERSION_1_8

    }

}

第五步 继承BannerAdapter,和RecyclerView的Adapter一样

/**

* BannerBean类 存放的是一些自定义关闭图片的get,set方法

 */

Public class HomeBannerAdapter extends BannerAdapter

 {

    //定义上下文

    private Context context;

    //构造函数  传递数据到适配器

    public HomeBannerAdapter(List mDatas,Context context) {

        //设置数据,也可以调用banner提供的方法,或者自己在adapter中实现

        super(mDatas);

        this.context=context;

    }

    //布局图片绑定

    @Override

    public BannerViewHolder onCreateHolder(ViewGroup parent, int viewType) {

        ImageView imageView = new ImageView(parent.getContext());

        //注意,必须设置为match_parent,这个是viewpager2强制要求的

        imageView.setLayoutParams(new ViewGroup.LayoutParams(

                ViewGroup.LayoutParams.MATCH_PARENT,

                ViewGroup.LayoutParams.MATCH_PARENT));

        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

        return new BannerViewHolder(imageView);

    }

    /*绑定图片*/

    @Override

    public void onBindView(BannerViewHolder holder,BannerBean data, int position, int size) {

        //holder.imageView.setImageResource(data.imageRes);

       //通过服务器获取图片的实际路径

        String imageUrl= ServiceUrls.getMainPageBannerImgUrl(data.getBannerPicture());

        //使用Glide加载图片 最简单的用户

        Glide.with(context)

                .load(imageUrl)

                .into(holder.imageView);//图片加载给到imageView

    }

    //控制每一张图片

//RecyclerView 需要添加implementation 'androidx.recyclerview:recyclerview:1.1.0'

    class BannerViewHolder extends RecyclerView.ViewHolder {

        ImageView imageView;



        public BannerViewHolder(@NonNull ImageView view) {

            super(view);

            this.imageView = view;

        }

    }

}

第六步 Banner方法调用  

  //获取控件

    private Banner bannerHomeHeader;//轮播顶部

     //获取控件

    bannerHomeHeader = view.findViewById(R.id.banner_home_header);

    bannerHomeHeader.setAdapter(new HomeBannerAdapter(bannerList,mActivityContext))

          .setIndicator(new CircleIndicator(mActivityContext))//设置指示器

          .setIndicatorSelectedColorRes(R.color.colorPrimary)//设置当前轮播指示器的颜色

          .isAutoLoop(true)//允许自动轮播

          .setDelayTime(5*1000)//设置轮播切换间隔 5s

           //设置轮播点击事件

          .setOnBannerListener(new OnBannerListener() {

                @Override

                public void OnBannerClick(Object data, int position) {

                //参数:轮播绑定的数据,轮播图片的索引

                BannerBean bannerBean= (BannerBean) data;

Toast.makeText(mActivityContext,String.valueOf(bannerBean.getBannerId()),Toast.LENGTH_SHORT).show();

             }

          })

          .start();

效果:

Android轮播图片_第1张图片

 

你可能感兴趣的:(Android,studio)