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

    <!--网络请求权限-->  
  <uses-permission android:name="android.permission.INTERNET"/>

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

    <!--轮播-->

    <com.youth.banner.Banner

        android:id="@+id/banner"

        android:layout_width="match_parent"

        android:layout_height="高度自己设置"/>

第四步 防止运行轮播报错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

<BannerBean, HomeBannerAdapter.BannerViewHolder> {

    //定义上下文

    private Context context;

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

    public HomeBannerAdapter(List<BannerBean> 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();

效果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值