先用起来
.gradle
compile 'com.github.bumptech.glide:glide:3.7.0'
AndroidManifest.xml增加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
xml
<RelativeLayout 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:background="#000"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
</RelativeLayout>
java
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
Glide.with(this).load("https://ss0.bdstatic" +
".com/5aV1bjqh_Q23odCf/static/superman/img/logo/logo_white.png").into(imageView);
}
显示效果
分析
关键代码只有1行
Glide.with(this).load(url).into(imageView);
.with()
首先,调用Glide.with()方法用于创建一个加载图片的实例,with()方法可以接收Context、Activity或者Fragment类型的参数。也就是说我们选择的范围非常广,不管是在Activity还是Fragment中调用with()方法,都可以直接传this
那如果调用的地方既不在Activity中也不在Fragment中呢?也没关系,我们可以获取当前应用程序的ApplicationContext,传入到with()方法当中
注意with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片加载也会停止
如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止
load()
load(),这个方法用于指定待加载的图片资源
Glide支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri对象等等。因此load()方法也有很多个方法重载,除了我们刚才使用的加载一个字符串网址之外,你还可以这样使用load()方法:
加载本地图片
File file = new File(Environment.getExternalStorageDirectory(), "test.png");
Glide.with(this).load(file).into(imageView);
注意
1、需要在AndroidMenifest.xml中增加读取文件权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2、在手机中打开读写手机存储权限
因为手机是安卓7.0,虽然代码中增加了权限,但默认是询问状态
加载应用资源
Glide.with(this).load(R.mipmap.ic_launcher).into(imageView);
以下两种方式因为目前没有用到,我自己没有测试
// 加载二进制流
byte[] image = getImageBytes();
Glide.with(this).load(image).into(imageView);
// 加载Uri对象
Uri imageUri = getImageUri();
Glide.with(this).load(imageUri).into(imageView);
into()
into()方法,我们希望让图片显示在哪个ImageView上,把这个ImageView的实例传进去就可以了。当然,into()方法不仅仅是只能接收ImageView类型的参数,还支持很多更丰富的用法,不过那个属于高级技巧,后面文章中再写
那么回顾一下Glide最基本的使用方式,就是先with(),再load(),最后into()。熟记这三步,你就已经入门Glide了
关于Glide这些文章,大部分我只是搬运工,然后加上了自己掉过的坑,供小白参考。
感谢郭大侠写出了这么简单明了的博客,φ(゜▽゜*)♪
下面是郭大侠的原博文地址