首页 > 其他分享 >Android——Glide加载网络图片

Android——Glide加载网络图片

时间:2024-01-07 18:11:07浏览次数:28  
标签:network Glide show iv mode import Android 加载

Glide是谷歌开发的图片加载框架,也是Android官方推荐的图片加载框架。

 

 

使用Glide之前需要先导入glide库:implementation 'com.github.bumptech.glide:glide:4.13.0‘

 

 

Glide的用法很简单,只需一行代码即可将网络图片加载到图像视图界面:Glide.with(活动实例).load(网址字符串).into(图像视图);

 

 

ifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.myapplication">

    <!-- 互联网 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 存储卡 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

 

 

布局:

<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>

 

 

 

 

 

 

 

 

 

 

 

 

 

activity:

package com.example.myapplication;

import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.Spinner;
import com.bumptech.glide.Glide;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity
{
    private ImageView iv_network;

    private String mImageUrl = "https://img0.baidu.com/it/u=1305074959,4101321827&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iv_network = findViewById(R.id.iv_network);

        CheckBox ck_fitxy = findViewById(R.id.ck_fitxy);
        ck_fitxy.setOnCheckedChangeListener((buttonView, isChecked) -> {
            // 设置图像视图的伸展类型
            iv_network.setScaleType(isChecked ? ImageView.ScaleType.FIT_XY : ImageView.ScaleType.FIT_CENTER);
        });

        initModeSpinner(); // 初始化显示方式的下拉框
    }

    // 初始化显示方式的下拉框
    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) {
        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);
        }
    }

}

 

 

 

 

标签:network,Glide,show,iv,mode,import,Android,加载
From: https://www.cnblogs.com/xiaobaibailongma/p/17950938

相关文章

  • Threejs——十四、关于深度冲突、重叠、以及加载模型进度条效果实现(附完整代码)
    深度冲突两个模型重叠的模型,通过浏览器旋转预览,会发现模型旋转的时候会发生闪烁。这种情况,主要是两个模型重合,电脑分不清谁在前谁在后,这种情况,可以理解为深度冲突Z-fighting。functionaddBox(){constgeometry=newTHREE.BoxGeometry(10,10,10);//材质constmater......
  • Android课程设计-安卓旅行日志APP+源代码+文档说明
    项目介绍简单的项目功能介绍:用户注册:邮箱填写、邮箱填写、密码填写、用户登录、用户忘记密码创建记事本:编写记事本、修改记事本、删除记事本、上传记事本数据管理:通过云服务器找回被删除的数据、本地笔记上传到云端、选择删除云端数据天气预报:获取用户当前位置的3天以内的天气情......
  • 安卓移动开发课程设计/Android期末大作业-小说app+源代码+文档说明
    项目介绍安卓课程设计—看书神器实现简单阅读器功能,纯新手安卓课设指南实现功能1.主页底部导航栏2.滚动图片3.从文件管理器读取txt文件4.登录注册退出登录登录相关数据保存在SharedPrefrences5页面大部分都是写死的,不过都有点击事件6.两个webview跳转到别的网站界面预览项目备注1......
  • 安卓移动开发课程设计/Android期末大作业,账本APP+源代码+文档说明
    项目介绍小凯账本APP,安卓端,个人的课程设计需求分析小凯账本APP是为了解决用户快捷方便记账的一款APP,所有的核心功能都是围绕记账展开,目的是为了简化方便记账流程,所以该APP的基本功能需求如表所示。功能说明添加账单分类账单分为收入和支出两类,具体在向下细分为用户自定义账单的分......
  • android移动开发大作业/课程设计-一个支持备注功能的课程表+源代码+文档说明
    项目介绍界面预览项目备注1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作......
  • Android 期末大作业 - 简单计算器,一键运行
    项目介绍项目功能界面预览项目备注1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程......
  • 哈工大android大作业-博客系统+源代码+文档说明+结构图
    项目介绍android大作业,本项目包含三个基本功能,分别是博客爬虫,缓存服务,本地随笔。博客爬虫是分页爬取博客园博客,在app上显示博客的html格式(包括博客中的图片);缓存服务是按策略缓存一些博客到本地数据库,当用户没网时打开app也能有博客可浏览,而不是简单的请求连接网络提示,不会影响用......
  • Android Studio导入现有项目的方法
    今年因为搞了四个电脑放在不同地点,经常遇到在新电脑上装了AndroidStudio之后需要导入现有项目的情况,有时挺顺利,有时又很麻烦,遇到各种问题导致无法build.不过也有一些规律,总结一下怎样做才能顺利导入:错误的做法从其他电脑上把项目目录拷贝过来,在AS中进行导入。这样特别容易遇到各种......
  • slf4j+logback源码加载流程解析
    slf4j绑定logback源码解析Loggerlog=LoggerFactory.getLogger(LogbackDemo.class);如上述代码所示,在项目中通常会这样创建一个Logger对象去打印日志。然后点进去,会走到LoggerFactory的getILoggerFactory()方法,如下代码所示。publicstaticILoggerFactorygetILoggerFactory()......
  • 跨平台开发教学:构建同时支持iOS和Android的教育网校APP
    当下,教育行业也逐渐迎来了数字化转型的时代。构建一款支持iOS和Android的教育网校APP,不仅可以提供更好的用户体验,还能扩大应用的覆盖面,满足不同用户群体的需求。一、选择合适的跨平台开发框架在开始构建教育网校APP之前,我们首先需要选择一个合适的跨平台开发框架。ReactNative、Flu......