Android 系统(263)---Glide框架

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的项目,首先在Modulebuild.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.运行应用,点击加载按钮,效果如下所示(添加了一个过渡效果)。 
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhangbijun1230/article/details/81490028