android中图片加载框架有很多,所有框架最终达到的目都是在Android平台上以极度简单的方式加载和展示图片,如果我们每个都拿来学习和使用的话,这样会极大的浪费我们的时间和经历,所以经过我的一番比较之后,我决定用Glide作为我研究和今后使用的对象。所以在这里简单介绍一下,希望大家借鉴以及学习。
注意:这里我们要添加两个依赖库,其中compiler库是用于生成Generated API的,后面我们会讲到它。
dependencies {
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
}
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);
- GenericTransitionOptions 通用型
- DrawableTransitionOptions
- BitmapTransitionOptions
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);
本文章为原创文章,禁止转载!!!!