IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android图片加载库Glide4使用教程(项目中如何快速将Glide3替换成Glide4) -> 正文阅读

[移动开发]android图片加载库Glide4使用教程(项目中如何快速将Glide3替换成Glide4)

RequestOptions options2 = new RequestOptions()

//禁用内存缓存

.skipMemoryCache(true)

//硬盘缓存功能

.diskCacheStrategy(DiskCacheStrategy.NONE);

Glide.with(this.getApplicationContext())

.load(url)

.apply(options2)

.into(mImage);

  • 指定加载格式GIF

Glide.with(this.getApplicationContext())

.load(“file:///android_asset/jdfw.gif”)

.into(mImage);

  • 获取gif第一帧

/**

  • 注意:在Glide 3中的语法是先load()再asBitmap()的,

  • 而在Glide 4中是先asBitmap()再load()的

  • 如果写错了顺序就肯定会报错了

*/

Glide.with(this.getApplicationContext())

//.asBitmap()//强制指定加载静态图片

//.asGif()//强制指定加载动态图片

//.asFile()//强制指定文件格式的加载

.asDrawable()//强制指定Drawable格式的加载

.load(“file:///android_asset/jdfw.gif”)

.into(mImage);

  • 回调与监听

/**

  • 回调与监听

*/

SimpleTarget simpleTarget = new SimpleTarget() {

@Override

public void onResourceReady(Drawable resource, Transition<? super Drawable> transition) {

mImage.setImageDrawable(resource);

}

};

Glide.with(this.getApplicationContext())

.load(url)

.into(simpleTarget);

  • 预加载后显示

预加载

Glide.with(this)

.load(“https://unsplash.it/200/200?random&22”)

.preload();

预加载后显示

Glide.with(this.getApplicationContext())

.load(“https://unsplash.it/200/200?random&22”)

.into(mImage);

  • submit()方法:类似Glide3中的downloadOnly

new Thread(new Runnable() {

@Override

public void run() {

try {

final Context context = getApplicationContext();

FutureTarget target = Glide.with(context)

//.asDrawable()

.asFile()

.load(url)

.submit();

//final Drawable drawable = target.get();

final File imageFile = target.get();

runOnUiThread(new Runnable() {

@Override

public void run() {

mTextview.setText(imageFile.getPath());

}

});

} catch (Exception e) {

e.printStackTrace();

}

}

}).start();

  • listener()方法

Glide.with(this.getApplicationContext())

.load(url)

.listener(new RequestListener() {

@Override

public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {

mTextview.setText(“加载失败”);

return false;

}

@Override

public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {

mTextview.setText(“加载成功”);

return false;

}

})

.into(mImage);

  • 图片变换(圆角等)

RequestOptions options3 = new RequestOptions();

//options3.centerCrop();

// options3.fitCenter();

options3.circleCrop();

Glide.with(this.getApplicationContext())

.load(“https://unsplash.it/200/200?random&55”)

.apply(options3)

.into(mImage);


自定义模块


在Glide3中定义了自定义模块之后,还必须在AndroidManifest.xml文件中去注册它才能生效,而在Glide 4中是不需要的,因为@GlideModule这个注解已经能够让Glide识别到这个自定义模块了(记得Build -> Rebuild Project)!

package tsou.com.simple.glide4test.glidemodule;

import android.content.Context;

import com.bumptech.glide.Glide;

import com.bumptech.glide.GlideBuilder;

import com.bumptech.glide.Registry;

import com.bumptech.glide.annotation.GlideModule;

import com.bumptech.glide.load.DecodeFormat;

import com.bumptech.glide.load.engine.cache.ExternalPreferredCacheDiskCacheFactory;

import com.bumptech.glide.module.AppGlideModule;

/**

  • Created by Administrator on 2017/12/22 0022.

  • 在Glide3中需要在AndroidManifest.xml中配置

  • Glide4,只要有@GlideModule注解就好

*/

@GlideModule

public class MyAppGlideModule extends AppGlideModule {

public static final int DISK_CACHE_SIZE = 500 * 1024 * 1024;

public static final String DISK_CACHE_NAME = “huangxiaoguo”;

@Override

public void applyOptions(Context context, GlideBuilder builder) {

super.applyOptions(context, builder);

/**

将所有Glide加载的图片缓存到SD卡上,

默认硬盘缓存大小都是250M,这里改为500

  • */

//builder.setDiskCache(new ExternalCacheDiskCacheFactory(context));

/**

ExternalCacheDiskCacheFactory的默认缓存路径

是在sdcard/Android/data/包名/cache/image_manager_disk_cache目录当中

*/

//builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, DISK_CACHE_SIZE));

/**

  • 更改缓存最总文件夹名称

  • 是在sdcard/Android/data/包名/cache/DISK_CACHE_NAME目录当中

*/

//此方法在Glide4已过时

// builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, DISK_CACHE_NAME, DISK_CACHE_SIZE));

builder.setDiskCache(new ExternalPreferredCacheDiskCacheFactory(context, DISK_CACHE_NAME, DISK_CACHE_SIZE));

/**

  • Glide也能使用ARGB_8888的图片格式

  • 虽然图片质量变好了,但同时内存开销也会明显增大

*/

builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);

}

@Override

public void registerComponents(Context context, Glide glide, Registry registry) {

super.registerComponents(context, glide, registry);

}

}

  • 默认缓存路径

这里写图片描述

  • 设置缓存路径为SD卡

这里写图片描述

Glide3替换成Glide4(Generated API)


在自定义模块完成以后,就可以使用Glide的模式啦!请看:

//使用Generated API(类似Glide3用法)

//使用GlideApp,首先确保你的代码中有一个自定义的模块,

// 并且给它加上了@GlideModule注解,也就是自定义模块

GlideApp.with(this.getApplicationContext())

.load(url)

.placeholder(R.drawable.ic_launcher_background)

.error(R.mipmap.load_error)

.skipMemoryCache(true)//清除缓存

.diskCacheStrategy(DiskCacheStrategy.NONE)//表示既缓存原始图片,也缓存转换过后的图片

.override(Target.SIZE_ORIGINAL)

.circleCrop()//切圆

.into(mImage);

把之前Glide替换成GlideApp,就可以使用Glide3的方式进行使用了!是不是很方便!

定制自己的API


定制自己的API需要借助@GlideExtension和@GlideOption这两个注解。创建一个我们自定义的扩展类

package tsou.com.simple.glide4test.glidemodule;

import com.bumptech.glide.annotation.GlideExtension;

import com.bumptech.glide.annotation.GlideOption;

import com.bumptech.glide.load.engine.DiskCacheStrategy;

import com.bumptech.glide.request.RequestOptions;

import tsou.com.simple.glide4test.R;

/**

  • Created by Administrator on 2017/12/25 0025.

*/

@GlideExtension

public class MyGlideExtension {

/**

  • 将这个类的构造函数声明成private,这是必须要求的写法

*/

private MyGlideExtension() {

}

@GlideOption

public static void myGlideConfiguration(RequestOptions options) {

//占位图

options.pla

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

ceholder(R.drawable.ic_launcher_background);

//错误图片

options.error(R.mipmap.load_error);

//表示只缓存原始图片

options.diskCacheStrategy(DiskCacheStrategy.DATA);

//切圆

options.circleCrop();

//…等等所有的属性

}

}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 16:06:39  更:2021-12-18 16:06:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:02:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码