Android App开发中使用Glide加载网络图片讲解及实战(附源码 简单易懂)

简介: Android App开发中使用Glide加载网络图片讲解及实战(附源码 简单易懂)

运行有问题或需要源码请点赞关注收藏~~~

一、使用Glide加载网络图片

对于如何方便快速的显示网络图片,谷歌开发了自己的Glide开源库,同样我们需要在bulid.gradle中引入如下依赖

implementation'com.github.bumptech.glide:glide:4.11.0'

Glide用法如下

Glide.with(活动实例).load(网址字符串).into(图像视图);

可见Glide的图片加载至少需要三个参数

1:当前页面的活动实例 参数类型为Activity

2:网络图片的链接地址 以http或者https打头 参数类型为字符串

3:准备显示网络图片的图像视图实例

Glide有多种方法可以调用 可以将图片以不同的形式呈现

下拉框中可以选择图片的呈现形式

此处建议还是真机连接  方便联网下载图片

代码如下

Java类

package com.example.chapter14;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import com.bumptech.glide.Glide;
public class GlideSimpleActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
    private ImageView iv_network;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_glide_simple);
        iv_network = findViewById(R.id.iv_network);
        CheckBox ck_fitxy = findViewById(R.id.ck_fitxy);
        ck_fitxy.setOnCheckedChangeListener(this);
        initModeSpinner(); // 初始化显示方式的下拉框
    }
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // 设置图像视图的伸展类型
        iv_network.setScaleType(isChecked ? ImageView.ScaleType.FIT_XY : ImageView.ScaleType.FIT_CENTER);
    }
    // 初始化显示方式的下拉框
    private void initModeSpinner() {
        ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(this,
                R.layout.item_select, modeArray);
        Spinner sp_show_mode = findViewById(R.id.sp_show_mode);
        sp_show_mode.setPrompt("请选择显示方式");
        sp_show_mode.setAdapter(modeAdapter);
        sp_show_mode.setSelection(0);
        sp_show_mode.setOnItemSelectedListener(new ModeSelectedListener());
    }
    private String[] modeArray = {"默认", "容纳居中fitCenter", "居中剪裁centerCrop", "居中入内centerInside", "圆形剪裁circleCrop"};
    class ModeSelectedListener implements AdapterView.OnItemSelectedListener {
        public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            showNetworkImage(arg2); // 加载并显示网络图片
        }
        public void onNothingSelected(AdapterView<?> arg0) {
        }
    }
    // 加载并显示网络图片
    private void showNetworkImage(int show_mode) {
        String mImageUrl = "http://b247.photo.store.qq.com/psb?/V11ZojBI312o2K/63aY8a4M5quhi.78*krOo7k3Gu3cknuclBJHS3g1fpc!/b/dDXWPZMlBgAA";
        if (show_mode == 0) { // 使用图像视图默认的显示方式
            Glide.with(this).load(mImageUrl).into(iv_network);
        } else if (show_mode == 1) { // 显示方式为容纳居中fitCenter
            Glide.with(this).load(mImageUrl).fitCenter().into(iv_network);
        } else if (show_mode == 2) { // 显示方式为居中剪裁centerCrop
            Glide.with(this).load(mImageUrl).centerCrop().into(iv_network);
        } else if (show_mode == 3) { // 显示方式为居中入内centerInside
            Glide.with(this).load(mImageUrl).centerInside().into(iv_network);
        } else if (show_mode == 4) { // 显示方式为圆形剪裁circleCrop
            Glide.with(this).load(mImageUrl).circleCrop().into(iv_network);
        }
    }
}

XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="5dp" >
    <CheckBox
        android:id="@+id/ck_fitxy"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:gravity="left|center"
        android:text="是否填满整个视图"
        android:textColor="#000000"
        android:textSize="17sp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="显示方式:"
            android:textColor="@color/black"
            android:textSize="17sp" />
        <Spinner
            android:id="@+id/sp_show_mode"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:spinnerMode="dialog" />
    </LinearLayout>
    <ImageView
        android:id="@+id/iv_network"
        android:layout_width="match_parent"
        android:layout_height="200dp" />
</LinearLayout>

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
537 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
12月前
|
Android开发 数据安全/隐私保护 开发者
Android自定义view之模仿登录界面文本输入框(华为云APP)
本文介绍了一款自定义输入框的实现,包含静态效果、hint值浮动动画及功能扩展。通过组合多个控件完成界面布局,使用TranslateAnimation与AlphaAnimation实现hint文字上下浮动效果,支持密码加密解密显示、去除键盘回车空格输入、光标定位等功能。代码基于Android平台,提供完整源码与attrs配置,方便复用与定制。希望对开发者有所帮助。
238 0
|
10月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
1201 4
|
数据采集 JSON 网络安全
移动端数据抓取:Android App的TLS流量解密方案
本文介绍了一种通过TLS流量解密技术抓取知乎App热榜数据的方法。利用Charles Proxy解密HTTPS流量,分析App与服务器通信内容;结合Python Requests库模拟请求,配置特定请求头以绕过反爬机制。同时使用代理IP隐藏真实IP地址,确保抓取稳定。最终成功提取热榜标题、内容简介、链接等信息,为分析热点话题和用户趋势提供数据支持。此方法也可应用于其他Android App的数据采集,但需注意选择可靠的代理服务。
553 11
移动端数据抓取:Android App的TLS流量解密方案
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
640 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
存储 缓存 安全
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?
1345 0
|
传感器 物联网 Android开发
【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)
【Android App】物联网中查看手机支持的传感器及实现摇一摇功能-加速度传感器(附源码和演示 超详细)
751 1
|
Android开发 网络架构
【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)
【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)
2312 1
|
XML 安全 Java
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
Android Studio App开发之广播组件Broadcast的讲解及实战(包括收发标准、有序、静态广播实现手机震动功能 附源码)
1217 0
|
XML Java 定位技术
【Android App】定位导航GPS中开启手机定位功能讲解及实战(附源码和演示 超详细)
【Android App】定位导航GPS中开启手机定位功能讲解及实战(附源码和演示 超详细)
1628 0

热门文章

最新文章