一、背景
Glide是google推荐的图片加载框架,他不仅性能高,功能强大,而且简单易用。但是网上的资料大部分还是集中的Glide3的版本,就整理了一套Glide4的基本用法教程,仅供大家参考。
备注:其他加载库的比较,暂时就不说了,大家可以网上搜索(glide,picasso,fresco,和老牌的Universal-image-loader)
目录:
2,Glide4-入门教程-2-占位符的使(placeholder, error, fallback)
二、环境配置 (使用Android Studio 3.0)
1,添加依赖 (app级别的build.gradle
文件添加依赖)
// 如果project 的build.gradle 中已经有这个配置,这里就不需要添加了 repositories { mavenCentral() google() } dependencies { implementation 'com.github.bumptech.glide:glide:4.6.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1' }
注意:对Android SDK的要求如下:
Min Sdk Version - 使用 Glide 需要 min SDK 版本 API 14 (Ice Cream Sandwich) 或更高。
Compile Sdk Version - Glide 必须使用 API 26 (Oreo) 或更高版本的 SDK 来编译。
Support Library Version - Glide 使用的支持库版本为 27。
如果你需要使用不同的支持库版本,你需要在你的 build.gradle 文件里去从 Glide 的依赖中去除 "com.android.support"。例如,假如你想使用 v26 的支持库:
ependencies { implementation ("com.github.bumptech.glide:glide:4.6.0") { exclude group: "com.android.support" } implementation "com.android.support:support-fragment:26.1.0" }
使用与 Glide 依赖的支持库不同的版本可能会导致一些运行时异常 ,例如:
java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat' at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119)
2,AndroidManifest.xml 中添加权限设置(根据具体情况添加一下权限)
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your.package.name" <!-- 这两个权限是必须添加的 --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!-- 要从本地文件夹或 DCIM 或图库中加载图片,你将需要添加 READ_EXTERNAL_STORAGE 权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 如果要使用 ExternalPreferredCacheDiskCacheFactory 来将 Glide 的缓存存储到公有 SD 卡上,你还需要添加 WRITE_EXTERNAL_STORAGE 权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application> ... </application> </manifest>
3, 如果在app目录下有 ProGuard 混淆代码文件,可以添加一下代码
-keep public class * implements com.bumptech.glide.module.GlideModule -keep public class * extends com.bumptech.glide.module.AppGlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } # for DexGuard only -keepresourcexmlelements manifest/application/meta-data@value=GlideModule
好了,以上就是整个环境的配置过程
三、简单用法
1,加载一张网络图片,只需一行代码:
Glide.with(fragment) // fragment 可以使 Fragment,Activity或者Context .load(myUrl) // 图片的地址 .into(imageView); // 目标ImageView
2 ,取消加载也很简单:如下
Glide.with(fragment).clear(imageView);
使用起来是不是非常的简单
四、后续将讲解Glide的高级用法,和相关配置,敬请期待