最新消息:欢迎访问Android开发中文站!商务联系QQ:1304524325

Glide框架-Android强化课程笔记

热点资讯 loading 118浏览 0评论

1、简介

在Android中常用的图像加载框架有:

  • UniversalImageLoader
  • Volley
  • Picasso
  • Fresco
  • Glide

关于Glide的详细资料Glide简体中文文档

2、Glide的基本使用

用法:
使用Glide加载图片

Glide.with(activity).load(Url).into(imageView);

取消加载

Glide.with(activity).clear(imageView);

1.创建一个名为GlideDemo的项目,首先在Modulebuild.gradle文件中的dependencies添加依赖。

compile 'com.github.bumptech.glide:glide:4.7.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'

2.布局文件编写如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/ivGlide"
        android:layout_width="300dp"
        android:layout_height="300dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="load"
        android:text="Load" />
</LinearLayout>

3.MainActivity代码编写如下:

public class MainActivity extends AppCompatActivity {
    private ImageView mIvGlide;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mIvGlide = findViewById(R.id.ivGlide);
    }

    public void load(View view) {
        Glide.with(this)
                .load("http://img.mukewang.com/55666c0a0001d6b506000338-240-135.jpg")
                .into(mIvGlide);
    }
}

4.在AndroidManifest中添加网络权限。

<uses-permission android:name="android.permission.INTERNET" />

5.运行应用,点击Load按钮,如下所示。
这里写图片描述

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方法为:

public void load(View view) {
        RequestOptions mRequestOptions = new RequestOptions()
                .circleCrop()//指定图片的缩放类型为centerCrop(圆形)
                .placeholder(R.drawable.default_pic)//加载成功之前的占位图
                .error(R.drawable.error_pic);//加载错误之后要显示的图片

        DrawableTransitionOptions mTransitionOptions=new DrawableTransitionOptions()
                .crossFade();

        Glide.with(this)
                .load("http://img.mukewang.com/55666c0a0001d6b506000338-240-135.jpg")
                .apply(mRequestOptions)
                .transition(mTransitionOptions)
                .into(mIvGlide);
    }

2.运行应用,如下所示效果:
这里写图片描述

4、缩略图功能

1.准备两张本地图片,一张将其亮度调为暗色,并另存为低品质的图片作为加载时的缩略图,另一张为原图。
这里写图片描述
2.修改load方法,如下所示。

public void load(View view) {
   DrawableTransitionOptions mTransitionOptions=new DrawableTransitionOptions()
                .crossFade();

   RequestBuilder<Drawable> mBuilder=Glide.with(this)
                .load(R.drawable.thumbnail);

   Glide.with(this)
                .load(R.drawable.normal)
                .thumbnail(mBuilder)
                .transition(mTransitionOptions)
                .into(mIvGlide);
    }

3.运行应用,点击加载按钮,效果如下所示(添加了一个过渡效果)。
这里写图片描述

转载请注明:Android开发中文站 » Glide框架-Android强化课程笔记

您必须 登录 才能发表评论!