| |
|
开发:
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);
Glide.with(this.getApplicationContext()) .load(“file:///android_asset/jdfw.gif”) .into(mImage);
/**
*/ 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);
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();
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; /**
*/ @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)); /**
*/ //此方法在Glide4已过时 // builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, DISK_CACHE_NAME, DISK_CACHE_SIZE)); builder.setDiskCache(new ExternalPreferredCacheDiskCacheFactory(context, DISK_CACHE_NAME, DISK_CACHE_SIZE)); /**
*/ builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); } @Override public void registerComponents(Context context, Glide glide, Registry registry) { super.registerComponents(context, glide, registry); } }
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; /**
*/ @GlideExtension public class MyGlideExtension { /**
*/ private MyGlideExtension() { } @GlideOption public static void myGlideConfiguration(RequestOptions options) { //占位图 options.pla
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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |