【Android -- 开源库】banner 的基本使用

在这里插入图片描述

一、简介

Android 广告图片轮播控件,支持无限循环和多种主题,可以灵活设置轮播样式、动画、轮播和切换时间、位置、图片加载框架等!

目前最新的版本是 2.2.2。
GitHub:banner

二、效果图

001.png

三、使用

1. 在 app/build.gradle 文件下添加依赖:

    implementation 'io.github.youth5201314:banner:2.2.2'
    //glide
    implementation 'com.github.bumptech.glide:glide:4.12.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'

2. 在 AndroidManifest.xml 文件中添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

3. 在 main_activity.xml 布局文件中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="280dp"
        app:banner_loop_time="3000"
        app:banner_auto_loop="true"
        app:banner_radius="5dp"
        app:banner_indicator_normal_width="6dp"
        app:banner_indicator_normal_color="@color/teal_700"
        app:banner_indicator_selected_color="@color/teal_200"
        app:banner_indicator_gravity="center"/>

</LinearLayout>

4. 继承 BannerAdapter

/**
 * Created on 2021/8/28 14:59
 *
 * @author Gong Youqiang
 */
public class ImageAdapter extends BannerAdapter<String,ImageAdapter.BannerViewHolder> {
    public ImageAdapter(List<String> mDatas) {
        //设置数据,也可以调用banner提供的方法,或者自己在adapter中实现
        super(mDatas);
    }

    //创建ViewHolder,可以用viewType这个字段来区分不同的ViewHolder
    @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, String data, int position, int size) {
        Glide.with(holder.itemView)
                .load(data)
                .apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))
                .into(holder.imageView);
    }

    class BannerViewHolder extends RecyclerView.ViewHolder {
        ImageView imageView;

        public BannerViewHolder(@NonNull ImageView view) {
            super(view);
            this.imageView = view;
        }
    }
}

5. 具体方法调用

public class MainActivity extends BaseActivity {
    private Banner banner;
    private List<String> images;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void init(Bundle savedInstanceState) {
        initView();
    }

    private void initView() {
        initData();
        banner = findViewById(R.id.banner);

        banner.addBannerLifecycleObserver(this)//添加生命周期观察者
                .setAdapter(new ImageAdapter(images))
                .setIndicator(new CircleIndicator(this));

        banner.setBannerGalleryMZ(60,0.8f);
    }

    @Override
    protected void onStart() {
        super.onStart();
        banner.start();
    }

    @Override
    protected void onStop() {
        super.onStop();
        banner.stop();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        banner.destroy();
    }

    private void initData() {
        images = new ArrayList<>();
        images.add("https://ae01.alicdn.com/kf/U54ae3ae4e9ac4572a436c11a9cfa4927E.jpg");
        images.add("https://ae01.alicdn.com/kf/Uda72804a12f94aceb38a28fa6dde9eb3w.jpg");
        images.add("https://ae01.alicdn.com/kf/U5fac38377c6d434b94fd1bbab4e5e0efz.jpg");
        images.add("https://ae01.alicdn.com/kf/U6cdabb09d259457291dee1102d5d7a22i.jpg");
        images.add("https://ae01.alicdn.com/kf/U9a21a2f4b83c4030b87c840bc07105e5A.jpg");
        images.add("https://ae01.alicdn.com/kf/U8f29046315a345b488a91f19e0691d7bx.jpg");
    }

}

推荐文章

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Android中,可以使用第三方来实现轮播图效果,其中一个常用的Banner。在使用Banner时,可以通过设置一些属性来自定义轮播图的效果。例如,可以设置轮播间隔时间、轮播图的圆角等属性。\[1\] 此外,还可以设置轮播图的样式,内置样式有多种可供选择,可以根据需求进行设置。可以设置图片的加载方式,设置图片的网址或地址集合,设置轮播图的标题集合等。还可以设置是否自动轮播、显示器的位置等。\[2\] 如果想要实现一个简单轮播图效果,可以使用Banner框架提供的BannerImageAdapter适配器。可以通过设置适配器来加载轮播图的数据,并在适配器中设置图片的显示方式。\[3\] 总结起来,使用Banner可以方便地实现Android中的轮播图效果,通过设置属性和适配器来自定义轮播图的样式和数据。 #### 引用[.reference_title] - *1* *3* [Android---Banner轮播图](https://blog.csdn.net/qq_44950283/article/details/128390186)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android入门Banner轮播图使用(详解)](https://blog.csdn.net/m0_53223811/article/details/122562021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值