• Android学习-下拉刷新、轮播图



    前言

    本博客仅做学习笔记,如有侵权,联系后即刻更改

    科普:


    下拉刷新

    1. 引入第三方控件(当前文件的gradle下的dependencies内)

    SmartRefreshLayout官网: github/gitee

    implementation  'io.github.scwang90:refresh-layout-kernel:2.0.5'//核心必须依赖
    implementation  'io.github.scwang90:refresh-header-classics:2.0.5'//经典刷新头
    implementation  'io.github.scwang90:refresh-header-radar:2.0.5'//雷达刷新头
    implementation  'io.github.scwang90:refresh-header-falsify:2.0.5'//虚拟刷新头
    implementation  'io.github.scwang90:refresh-header-material:2.0.5' //谷歌刷新头
    implementation  'io.github.scwang90:refresh-header-two-level:2.0.5' //二级刷新头
    implementation  'io.github.scwang90:refresh-footer-ball:2.0.5' //球脉冲加载
    implementation  'io.github.scwang90:refresh-footer-classics:2.0.5' //经典加载 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2. 添加引用(gradle.propeties文件)

    android.enableJetifier=true
    在这里插入图片描述

    3. 使用代码

    //          下拉刷新
            smartRefreshLayout = getActivity().findViewById(R.id.refresh_layout);
            smartRefreshLayout.setRefreshHeader(new MaterialHeader(getActivity()));
            smartRefreshLayout.setRefreshFooter(new BallPulseFooter(getActivity()));
    
            上拉加载更多
            smartRefreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() {
                @Override
                public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                    Api api =RetrofitUtils.getRetrofit("https://api.apiopen.top/api/").create(Api.class);
                    Call<TypeVideos> videosCall = api.getVideos(0,10);
                    videosCall.enqueue(new Callback<TypeVideos>() {
                        @Override
                        public void onResponse(Call<TypeVideos> call, Response<TypeVideos> response) {
                            TypeVideos typeVideos = response.body();
                            myAdapter3 = new MyAdapter();
                            recyclerView.setAdapter(myAdapter3);
                            for (int i = 0; i < 10; i++){
                                movieUrl.add(typeVideos.result.list.get(i).playUrl);
                                title.add(typeVideos.result.list.get(i).title);
                                image.add(typeVideos.result.list.get(i).coverUrl);
                            }
                            myAdapter3.notifyDataSetChanged();
                            smartRefreshLayout.finishRefresh(1000);
                        }
    
                        @Override
                        public void onFailure(Call<TypeVideos> call, Throwable t) {
    
                        }
                    });
                }
            });
    
    //          下拉刷新
            smartRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
                @Override
                public void onRefresh(@NonNull RefreshLayout refreshLayout) {
                    movieUrl.clear();
                    title.clear();
                    image.clear();
                    Api api =RetrofitUtils.getRetrofit("https://api.apiopen.top/api/").create(Api.class);
                    Call<TypeVideos> videosCall = api.getVideos(0,10);
                    videosCall.enqueue(new Callback<TypeVideos>() {
                        @Override
                        public void onResponse(Call<TypeVideos> call, Response<TypeVideos> response) {
                            TypeVideos typeVideos = response.body();
                            myAdapter3 = new MyAdapter();
                            recyclerView.setAdapter(myAdapter3);
                            for (int i = 0; i < 10; i++){
                                movieUrl.add(typeVideos.result.list.get(i).playUrl);
                                title.add(typeVideos.result.list.get(i).title);
                                image.add(typeVideos.result.list.get(i).coverUrl);
                            }
                            myAdapter3.notifyDataSetChanged();
                            smartRefreshLayout.finishRefresh(1000);
                        }
    
                        @Override
                        public void onFailure(Call<TypeVideos> call, Throwable t) {
    
                        }
                    });
                }
            });
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67

    网络图片制作轮播图

    1. 引入依赖包

    轮播图依赖包链接

    //轮播图
           implementation 'io.github.youth5201314:banner:2.2.2'
    
    //网络请求
            implementation 'com.github.bumptech.glide:glide:4.13.0'
            annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 联网申请(AndroidManifest)

    <uses-permission android:name="android.permission.INTERNET"/>
    android:usesCleartextTraffic="true"
    
    • 1
    • 2

    在这里插入图片描述

    3. 创建banner控件(.xml)

    在这里插入图片描述

    4. 使用代码(.java)

    //初始化参数(全局变量)
        Banner banner;
        List<String> bannerlist =new ArrayList<>();
    
    //加载banner和网络图片地址(onCreate中)
        banner.findViewById(R.id.banner);
        bannerlist.add("https://img.wowoqq.com/allimg/image/506.jpg");
        bannerlist.add("https://img.wowoqq.com/allimg/image/504.jpg");
    
    //实现动态切换(onCreate中)
        banner.setAdapter(new BannerImageAdapter<String>(bannerlist) {
        @Override    public void onBindView(BannerImageHolder holder, String data, int position, int size) {
        //进行网络图片加载        Glide.with(holder.imageView)
                        .load(data)
                        .into(holder.imageView);    }});
      //  设置下部指示圆点
            banner.setIndicator(new CircleIndicator(this));
            banner.setIndicatorRadius(80);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    总结

    小小励志

    有些事你现在不做,一辈子都不会做了。
    如果你想做一件事,全世界都会为你让路。
    《搭车去柏林》

  • 相关阅读:
    QCon 回顾 | Data Fabric:逻辑统一、物理分散
    ⾃定义类型:结构体
    leetcode:891. 子序列宽度之和【排序 + 贡献法】
    MyBatis select标签的简介说明
    RK3399的Ubuntu计算机安装使用
    mybatis实战:二、mybatis xml 方式的基本用法
    【JavaWeb】案例一:记录用户的上次访问时间
    “之江创客”聚焦农村电商创新发展 扎实助推共同富裕
    dp练习2
    HDMI之EDID
  • 原文地址:https://blog.csdn.net/qq_51922077/article/details/126278651