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

news/2024/5/20 1:53:50 标签: android, glide, android studio, java, gradle

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

一、使用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>

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


http://www.niftyadmin.cn/n/8886.html

相关文章

Linux 之 split 切分大文件 cat 合并多个小文件

需求&#xff1a; B数据中心上线&#xff0c;需要做内网私服&#xff08;单机yum源repo私服&#xff09; 搞个rhel7.9 iso 分析&#xff1a; 官网下载太慢&#xff0c;某度网盘下载也是慢 突然想起来&#xff0c;A数据中心有一台服务器上边有iso&#xff0c;奈何传输文件限值大…

Sourcetree的实际使用开发笔记

目录 前言 一、Sourcetree是什么 二、Sourcetree使用步骤 1.创建仓库 2.拉取和推送的使用 3.创建新的自己的分支 三、使用Sourcetree来进行不提交本地的代码&#xff0c;而获取最新的代码拉取 总结 前言 本章主要是记录一下Sourcetree的基本使用功能。 一、Sourcetree是…

Redis 实现限流策略

除了控制流量&#xff0c;限流还有一个应用目的是用于控制用户行为&#xff0c;避免垃圾请求。 比如在 UGC 社区&#xff0c;用户的发帖、回复、点赞等行为都要严格受控&#xff0c;一般要严格限定某行为在规定 时间内允许的次数&#xff0c;超过了次数那就是非法行为。对非法…

Linux日志管理logrotate日志轮转

文章目录 前言 日志轮转简介 工作原理 配置文件种类 观察主文件和子文件 主配置文件介绍 yum日志轮转示例 配置轮转规则 rotate 3演示 总结 前言 上篇文章学习了系统日志管理&#xff0c;对于日志来讲他是占内存的&#xff0c;当有大量的日志产生的时候&#xff0c;会…

vision transformer 剪枝论文汇总

Vision Transformer Pruning 这篇论文的核心思想很简单&#xff0c;就是剪维度&#xff0c;也就是说剪的是这个d。 具体方法就是通过一个gate&#xff0c;如图中的dimension pruning&#xff0c;输出0或者1&#xff0c;来判断不同维度的重要性&#xff0c;但是由于0和1&#xf…

java计算机毕业设计健康医疗预约系统源码+mysql数据库+系统+lw文档+部署

java计算机毕业设计健康医疗预约系统源码mysql数据库系统lw文档部署 java计算机毕业设计健康医疗预约系统源码mysql数据库系统lw文档部署本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff1a;idea eclipse 前端技术&a…

单例模式~

单例模式&#xff1a;在应用该模式中该类永远只有一个实例&#xff0c;即一个类永远只能创建一个对象 饿汉单例&#xff1a; 在用类获取对象的时候&#xff0c;对象已经提前创建好了一个对象 public class SingInstance {/** 饿汉单例* 1.定义一个类&#xff0c;并且将构造器…

R语言使用caret包的predict函数对测试数据集进行数据预处理(和训练集的处理方式保持一致):缺失值填充、数值变量最小最大缩放、因子变量独热编码等

R语言使用caret包的predict函数对测试数据集进行数据预处理(和训练集的处理方式保持一致):缺失值填充、数值变量最小最大缩放、因子变量独热编码等 目录