Glide框架
1、简介
在Android中常用的图像加载框架有:
- UniversalImageLoader
- Volley
- Picasso
- Fresco
- Glide
关于Glide的详细资料:Glide简体中文文档
2、Glide的基本使用
用法:
使用Glide加载图片
<span style="color:#000000"><code class="language-java">Glide.with(activity).load(Url).into(imageView);</code></span>
取消加载
<span style="color:#000000"><code class="language-java">Glide.with(activity).clear(imageView);</code></span>
1.创建一个名为GlideDemo
的项目,首先在Module
的build.gradle
文件中的dependencies
添加依赖。
<span style="color:#000000"><code class="language-app">compile <span style="color:#009900">'com.github.bumptech.glide:glide:4.7.1'</span>
annotationProcessor <span style="color:#009900">'com.github.bumptech.glide:compiler:4.7.1'</span></code></span>
2.布局文件编写如下:
<span style="color:#000000"><code class="language-xml"><span style="color:#006666"><<span style="color:#4f4f4f">LinearLayout</span> <span style="color:#4f4f4f">xmlns:android</span>=<span style="color:#009900">"http://schemas.android.com/apk/res/android"</span>
<span style="color:#4f4f4f">xmlns:tools</span>=<span style="color:#009900">"http://schemas.android.com/tools"</span>
<span style="color:#4f4f4f">android:layout_width</span>=<span style="color:#009900">"match_parent"</span>
<span style="color:#4f4f4f">android:layout_height</span>=<span style="color:#009900">"match_parent"</span>
<span style="color:#4f4f4f">android:gravity</span>=<span style="color:#009900">"center_horizontal"</span>
<span style="color:#4f4f4f">android:orientation</span>=<span style="color:#009900">"vertical"</span>
<span style="color:#4f4f4f">tools:context</span>=<span style="color:#009900">".MainActivity"</span>></span>
<span style="color:#006666"><<span style="color:#4f4f4f">ImageView
</span> <span style="color:#4f4f4f">android:id</span>=<span style="color:#009900">"@+id/ivGlide"</span>
<span style="color:#4f4f4f">android:layout_width</span>=<span style="color:#009900">"300dp"</span>
<span style="color:#4f4f4f">android:layout_height</span>=<span style="color:#009900">"300dp"</span> /></span>
<span style="color:#006666"><<span style="color:#4f4f4f">Button
</span> <span style="color:#4f4f4f">android:layout_width</span>=<span style="color:#009900">"wrap_content"</span>
<span style="color:#4f4f4f">android:layout_height</span>=<span style="color:#009900">"wrap_content"</span>
<span style="color:#4f4f4f">android:onClick</span>=<span style="color:#009900">"load"</span>
<span style="color:#4f4f4f">android:text</span>=<span style="color:#009900">"Load"</span> /></span>
<span style="color:#006666"></<span style="color:#4f4f4f">LinearLayout</span>></span></code></span>
3.MainActivity
代码编写如下:
<span style="color:#000000"><code class="language-java"><span style="color:#000088">public</span> <span style="color:#000088">class</span> <span style="color:#4f4f4f">MainActivity</span> <span style="color:#000088">extends</span> <span style="color:#4f4f4f">AppCompatActivity</span> {
<span style="color:#000088">private</span> ImageView mIvGlide;
<span style="color:#9b859d">@Override</span>
<span style="color:#000088">protected</span> <span style="color:#000088">void</span> <span style="color:#009900">onCreate</span>(Bundle savedInstanceState) {
<span style="color:#000088">super</span>.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mIvGlide = findViewById(R.id.ivGlide);
}
<span style="color:#000088">public</span> <span style="color:#000088">void</span> <span style="color:#009900">load</span>(View view) {
Glide.with(<span style="color:#000088">this</span>)
.load(<span style="color:#009900">"http://img.mukewang.com/55666c0a0001d6b506000338-240-135.jpg"</span>)
.into(mIvGlide);
}
}</code></span>
4.在AndroidManifest中添加网络权限。
<span style="color:#000000"><code class="language-xml"><span style="color:#006666"><<span style="color:#4f4f4f">uses-permission</span> <span style="color:#4f4f4f">android:name</span>=<span style="color:#009900">"android.permission.INTERNET"</span> /></span></code></span>
5.运行应用,点击Load按钮
,如下所示。
扫描二维码关注公众号,回复:
2749053 查看本文章
3、Glide的高级用法(仅列举几个)
针对上面的应用,我们进一步做一些优化,比如,图片迟迟下载不了则显示空白,体验就不太好。
详细参考地址:https://muyangmin.github.io/glide-docs-cn/doc/options.html
3.1、RequestOptions(请求选项)
Glide中的大部分设置项都可以通过RequestOptions
类和apply()
方法来应用到程序中。
使用RequestOptions
可以实现(包括但不限于):
- 占位符(Placeholders)
- 转换(Transformations)
- 缓存策略(Caching Strategies)
- 组件特有的设置项,例如编码质量,或Bitmap的解码配置等。
3.2、TransitionOptions(过渡选项)
使用TransitionOption
可以应用以下变换:
- View淡入
- 与占位符交叉淡入
- 或者什么都不发生
- 如果不使用变换,你的图像将会“跳入”其显示位置,直接替换掉之前的图像。为了避免这种突然的改变,你可以淡入view,或者让多个Drawable交叉淡入,而这些都需要使用
TransitionOptions
完成。- 假如你请求加载一个Bitmap,你需要使用
BitmapTransitionOptions
,而不是DrawableTransitionOptions
。同样,当你请求加载 Bitmap 时,你只需要做简单的淡入,而不需要做复杂的交叉淡入。
3.3、例子演示
1.接着上面的例子,继续修改MainActivity的代码,修改load
方法为:
<span style="color:#000000"><code class="language-java"><span style="color:#000088">public</span> <span style="color:#000088">void</span> <span style="color:#009900">load</span>(View view) {
RequestOptions mRequestOptions = <span style="color:#000088">new</span> RequestOptions()
.circleCrop()<span style="color:#880000">//指定图片的缩放类型为centerCrop(圆形)</span>
.placeholder(R.drawable.default_pic)<span style="color:#880000">//加载成功之前的占位图</span>
.error(R.drawable.error_pic);<span style="color:#880000">//加载错误之后要显示的图片</span>
DrawableTransitionOptions mTransitionOptions=<span style="color:#000088">new</span> DrawableTransitionOptions()
.crossFade();
Glide.with(<span style="color:#000088">this</span>)
.load(<span style="color:#009900">"http://img.mukewang.com/55666c0a0001d6b506000338-240-135.jpg"</span>)
.apply(mRequestOptions)
.transition(mTransitionOptions)
.into(mIvGlide);
}</code></span>
2.运行应用,如下所示效果:
4、缩略图功能
1.准备两张本地图片,一张将其亮度调为暗色,并另存为低品质的图片作为加载时的缩略图,另一张为原图。
2.修改load方法,如下所示。
<span style="color:#000000"><code class="language-java"><span style="color:#000088">public</span> <span style="color:#000088">void</span> <span style="color:#009900">load</span>(View view) {
DrawableTransitionOptions mTransitionOptions=<span style="color:#000088">new</span> DrawableTransitionOptions()
.crossFade();
RequestBuilder<Drawable> mBuilder=Glide.with(<span style="color:#000088">this</span>)
.load(R.drawable.thumbnail);
Glide.with(<span style="color:#000088">this</span>)
.load(R.drawable.normal)
.thumbnail(mBuilder)
.transition(mTransitionOptions)
.into(mIvGlide);
}</code></span>
3.运行应用,点击加载按钮,效果如下所示(添加了一个过渡效果)。