Android图片加载框架——Glide(Glide v4)

前言

android中图片加载框架有很多,所有框架最终达到的目都是在Android平台上以极度简单的方式加载和展示图片,如果我们每个都拿来学习和使用的话,这样会极大的浪费我们的时间和经历,所以经过我的一番比较之后,我决定用Glide作为我研究和今后使用的对象。所以在这里简单介绍一下,希望大家借鉴以及学习。

1. 添加依赖

注意:这里我们要添加两个依赖库,其中compiler库是用于生成Generated API的,后面我们会讲到它。

dependencies {
    implementation 'com.github.bumptech.glide:glide:4.8.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
}

2. 下载图片需要网络权限,所以在AndroidManifest.xml中声明一下网络权限


3. 加载图片

3.1 首先来尝试加载一张网络图片吧,图片地址:http://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg

3.2 布局文件:很简单就一个Button和一个用于展示的ImageView,点击Button之后就去加载该张图片,给按钮添加了个点击的方法doClick。我用的原生布局




    

3.3 为了点击Button的时候能够将刚才的图片显示在ImageView上,需要修改MainActivity中的代码,如下所示:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import com.bumptech.glide.Glide;

public class MainActivity extends AppCompatActivity {

    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = findViewById(R.id.imageView);
    }

    public void doClick(View view) {
        String url = "http://cn.bing.com/az/hprichbg/rb/Dongdaemun_ZH-CN10736487148_1920x1080.jpg";
        Glide.with(this).load(url).into(imageView);
    }
}

看一下load方法:

// 加载本地图片
File file = new File(getExternalCacheDir() + "/image.jpg");
Glide.with(this).load(file).into(imageView);

// 加载应用资源
int resource = R.drawable.image;
Glide.with(this).load(resource).into(imageView);

// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);

// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);

into()方法:

让图片显示在哪个ImageView上,把这个ImageView的实例传进去就可以了

设置加载动画:

       通常方法如下:

Glide.with(this)
                .load(url)
                //transition(TransitionOptions transitionOptions)
                .transition(DrawableTransitionOptions.withCrossFade())
                .into(imageView);

  • TransitionOptions决定图片加载完成如何从占位符图片(或者之前的图片)过渡。
  • 有三种TransitionOptions:
    1. GenericTransitionOptions 通用型
    2. DrawableTransitionOptions
    3. BitmapTransitionOptions
  • TransitionOptions是和你要加载的资源的类型绑定的,也就是说,如果你请求一张位图Bitmap,你就需要使用BitmapTransitionOptions,而不是DrawableTransitionOptions。如果既不是Bitmap也不是Drawable就使用GenericTransitionOptions。Glide加载网络图片默认的类型是Drawable,所以加载网络图片我们使用DrawableTransitionOptions即可。
  • 如果要使用自定义的动画,可以使用GenericTransitionOptions.with(int viewAnimationId)或者BitmapTransitionOptions.withCrossFade(int animationId, int duration)或者DrawableTransitionOptions.withCrossFade(int animationId, int duration)。
  • 出于性能考虑,最好不要在ListView,GridView,RecycleView中使用过渡动画,使用TransitionOptions.dontTransition()可以不加载动画,也可以使用dontAnimate不加载动画。
RequestOptions options = new RequestOptions()
                .dontTransform();

4设置下载优先级

RequestOptions options = new RequestOptions()
                .priority(Priority.NORMAL);

占位图

占位图就是指在图片的加载过程中,我们先显示一张临时的图片,等图片加载出来了再替换成要加载的图片

看一下使用gilde加载占位图吧

RequestOptions options = new RequestOptions() .placeholder(R.mipmap.ic_launcher); Glide.with(this) .load(url) .apply(options) .into(imageView);

这个加载有点快,占位图还来不及显示

稍微修改一下

RequestOptions options = new RequestOptions() .placeholder(R.mipmap.ic_launcher) .diskCacheStrategy(DiskCacheStrategy.NONE); Glide.with(this) .load(url) .apply(options) .into(imageView);

指定图片的大小

RequestOptions options = new RequestOptions()
                .override(100, 100);
        Glide.with(this)
                .load(url)
                .apply(options)
                .into(imageView);

如果想加载图片原始尺寸的话,使用关键字

RequestOptions options = new RequestOptions()
                override(Target.SIZE_ORIGINAL);
        Glide.with(this)
                .load(url)
                .apply(options)
                .into(imageView);


本文章为原创文章,禁止转载!!!!
 

 

 

你可能感兴趣的:(Android图片加载框架——Glide(Glide v4))