用户登录
用户注册

分享至

Android Banner 实现自动轮播 ,小圆点标题

  • 作者: 亖呉?盀
  • 来源: 51数据库
  • 2021-07-12

Android Banner 现实自动轮播 ,小圆点 标题

效果图如上,这里用到的是youth5201314 的banner 更具体可以前往链接查看

添加banner依赖:

    implementation 'com.youth.banner:banner:1.4.9'
    implementation 'com.github.bumptech.glide:glide:3.7.0'

对应布局:

<com.youth.banner.Banner
        android:id="@+id/banner"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/dp_180" />

下面来看具体的代码实现:

public class MainActivity extends AppCompatActivity implements OnBannerListener {
    Banner banner;

    private ArrayList<String> list_path;//这里需要注意 标题和图片使用ArrayList的数组接收

    private ArrayList<String> list_title;//需要把数据遍历保存在string数组中

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        banner = findViewById(R.id.banner);
        
        initView();
    }


    private void initView() {

        banner = (Banner) findViewById(R.id.banner);

        //放图片地址的集合

        list_path = new ArrayList<>();

        //放标题的集合
        list_title = new ArrayList<>();
        
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg");
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg");
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg");
        list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg");

        list_title.add("好好学习");
        list_title.add("天天向上");
        list_title.add("热爱劳动");
        list_title.add("不搞对象");

        //设置内置样式,共有六种可以点入方法内逐一体验使用。
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);

        //设置图片加载器,图片加载器在下方
        banner.setImageLoader(new MyLoader());

        //设置图片网址或地址的集合
        banner.setImages(list_path);

        //设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验
        banner.setBannerAnimation(Transformer.Default);

        //设置轮播图的标题集合
        banner.setBannerTitles(list_title);

        //设置轮播间隔时间
        banner.setDelayTime(3000);

        //设置是否为自动轮播,默认是“是”。
        banner.isAutoPlay(true);

        //设置指示器的位置,小点点,左中右。
        banner.setIndicatorGravity(BannerConfig.CENTER)

        //以上内容都可写成链式布局,这是轮播图的监听。比较重要。方法在下面。
                .setOnBannerListener(this)

        //必须最后调用的方法,启动轮播图。
                .start();

    }

    //轮播图的监听方法  设置点击事件
    @Override
    public void OnBannerClick(int position) {
        Log.i("tag", "你点了第" + position + "张轮播图");
    }

    //自定义的图片加载器
    private class MyLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            Glide.with(context).load((String) path).into(imageView);
        }
    }

还要加代码混淆,防止在release版本出现异常(正式环境报错)

# glide 的混淆代码
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
        public *;
    }
# banner 的混淆代码
-keep class com.youth.banner.** {*;}

书到用时方恨少,纸上得来终觉浅。共勉。

本文地址:http://www.51sjk.com/Upload/Articles/1/0/262/262743_20210702003208560.jpg

软件
前端设计
程序设计
Java相关