当前位置: 首页 > news >正文

Retrofit网络编程Glide获取图片

简介

        Retrofit是一个类型安全的HTTP客户端,用于Android和Java平台。它通过注解来定义HTTP请求,并将响应直接转换为Java对象。Retrofit的主要特点是它的简洁性和灵活性,它允许开发者以声明式的方式来描述网络请求,并且无缝地与OkHttp库集成,支持同步和异步调用、拦截器、多线程以及RxJava等响应式编程库的集成。

        Glide则是一个专注于高效加载、展示图片和视频的库。它处理了图片加载的所有复杂性,包括从网络、本地存储或应用资源加载图片,以及图片的内存和磁盘缓存管理。Glide能自动管理资源,减少内存泄漏风险,同时提供了丰富的图片处理选项,如大小调整、裁剪和各种变换效果。

        在实际开发中,这两个库常常协同工作,形成强大的数据和资源加载组合。典型的应用场景是:使用Retrofit负责从服务器获取数据(包括图片URLs),然后将这些URLs传递给Glide,由Glide负责从URL加载并显示图片。这种分工合作的方式使得开发者可以清晰地分离网络请求逻辑和图片加载逻辑,提高代码的可维护性和可读性。

一、添加依赖

com.github.bumptech.glide:compiler:4.13.1
com.squareup.retrofit2:retrofit:2.x.y
com.github.bumptech.glide:glide:4.13.1
com.squareup.retrofit2:converter-scalars:2.x.y
com.squareup.retrofit2:converter-gson:2.x.y
org.jsoup:jsoup:1.17.2

然后,在你想要显示图片的Activity或Fragment中,使用如下代码加载图片到ImageView:

搜索域名地址com.github.bumptech.glide

 

点击Apply应用:

依赖添加成功:

二、初始化Retrofit

        这段代码构建了一个Retrofit客户端,它准备好了与指定的基础URL进行通信,并且配置为使用ScalarsConverterFactory来处理响应体的转换。如果您打算从中国气象局的API获取JSON数据并映射到具体的Java对象上,您应该考虑替换转换器工厂为支持JSON解析的转换器(GsonConverterFactory.create())。

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://weather.cma.cn/")
                .addConverterFactory(ScalarsConverterFactory.create())
                                .build();

三、创建接口及访问网络的权限

        访问网络的权限:

        

        @GET("web/weather/57816.html"): 这是一个Retrofit的注解,用来标记该接口方法是一个HTTP GET请求。括号内的字符串"web/weather/57816.html"是请求的相对路径,它将会被自动追加到在Retrofit.Builder中设置的baseUrl后面。

public interface WHttp {
    @GET("web/weather/57816.html")
    Call<String> getHtmlContent();
}

四、

WHttp wHttp = retrofit.create(WHttp.class);
                Call<String> call = wHttp.getHtmlContent();

五、

 runOnUiThread(new Runnable() {
                                 @Override
                                 public void run() {
                                     String html = response.body();
                                     Document doc = Jsoup.parse(html);
                                     String im = doc.select("img").attr("src");

                                     RecyclerView recyclerView = findViewById(R.id.ReCy);
                                     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);
                                     recyclerView.setLayoutManager(linearLayoutManager);
                                     ImgAdapter adapter = new ImgAdapter(MainActivity.this,list2);
                                     recyclerView.setAdapter(adapter);

                                     Elements imgUrl = doc.select("img");
                                     for (Element url : imgUrl) {
                                         String ur = url.attr("src");
                                             String urs = "https://weather.cma.cn" + ur;
                                             list2.add(urs); // 将URL添加到列表
                                     }
                                     StringBuilder urlsText = new StringBuilder();
                                     for (String url : list2) {
                                         urlsText.append(url).append("\n");
                                     }
                                     textView.setText(urlsText.toString()); // 设置TextView的文本为所有URL的字符串形式
                                 }
                             });

六、

 

 

 

 

 

 

 

相关文章:

  • 搭建gpu版本的tensorflow
  • 单片机内存划分总览与介绍
  • 【老张的程序人生】一天时间,我成软考高级系统分析师
  • ctfhow——web入门171~175
  • Python每日一题(7)
  • Go语言手动内存对齐的四大场景与实践指南
  • Android面试总结之Handler 机制深入探讨原理、应用与优化
  • Wi-SUN技术,强势赋能智慧城市构筑海量IoT网络节点
  • 数据可视化(matplotlib)-------图表样式美化
  • LabVIEW 布尔控件回车键触发程序退出
  • 力扣HOT100之普通数组:238. 除自身以外数组的乘积
  • Pydantic Schema生成指南:自定义JSON Schema
  • Nginx RTMP 网络调用模块 (ngx_rtmp_netcall_module) 详细分析
  • Spring Boot 集成实战:AI 工具如何自动生成完整微服务模块
  • 解决 Gin Web 应用中 Air 热部署无效的问题
  • 力扣 --2712. 使所有字符相等的最小成本
  • 10:00面试,10:08就出来了,问的问题有点变态。。。
  • Chrome 开发环境快速屏蔽 CORS 跨域限制!
  • 小型水库大坝安全及水雨情监测技术方案
  • TypeScript三斜线指令深度解析:原理剖析与实战指南
  • 什么叫网站地图/windows优化大师怎么用
  • 网站外链分析/互联网全媒体广告代理
  • 网站页面制作多少钱/建网站的详细步骤
  • 临沂建设企业网站/网站测速
  • 视频 怎么做网站/电商培训内容有哪些
  • 做电锯电音的网站/西安网站建设制作