这篇文章只是用最简单的方式表达一下Glide的简单实用而已。
内容不会很多,对于用过Glide的真心不用看了。
为什么使用Glide
怎么去理解Glide呢?我觉得先通过他做了什么来讲解,能更好的理解。
在做Android应用开发的过程中,有非常多的需求会显示图片,如果没有图片那么就只剩下光秃秃的文字了,那么页面效果会非常难看。图片资源一般会从三个大的地方获取。第一个地方就是网络。大部分应用的图片是从网络获取的。第二个地方就是我们的资源文件直接打包到APK里面。这里简单说下打包在apk里面的图片。一般也会分很多地方保存。比如drawable文件夹,还有mipmap文件夹,assets文件夹。第三个大的地方就是手机的内部存储或者sd卡等手机的里面获取的,比如我们拍照的图片一般都会保存在手机内部。
一般互联网的图片处理比较麻烦。流程也比较复杂,需要先下载图片,而且很多图片可能下次访问的时候还需要使用,那么我们希望图片下载之后能保存到手机里,下次访问可以直接从手机获取。最后加载到内存,显示到ImageView 上面,如果一个应用加载很多图片,图片比较大的时候经常会出现内存溢出异常。这是因为手机内存有限,分配给每个应用的内存更少,所以我们还要处理很多事情。这些工作其实每个应用开发基本流程是一致的,而且这些工作很多人都做过,最后大家封装好了一些代码,供大家使用。Glide只是其中的一个,比如还有Picasso,Volley的 ImageLoader,Fresco 这几个都是大公司封装好的,还有一个是过去最常用的叫Universal Image Loader,不过现在应该是不维护了。其实使用哪个都是可以的。以后应该都要会。
Glide是什么,他是做什么的呢?
通过上面的理解大家应该能明白,Glide是一个图片加载框架。目的就是帮助我们把图片显示到图片控件上,一般就是我们说的Image View控件。
那么如何使用这框架呢。这里第一步就是要把框架引入到我们项目里面
在Android Studio引如Glide非常简单
在app里的builde.gradle文件里面添加上
//这个是3.7的版本的。现在已经4.x了,其实使用方式大同小异
compile 'com.github.bumptech.glide:glide:3.7.0'
代码大概是这个样子的,最后一行就是我们加载Glide 配置方法。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile 'com.github.bumptech.glide:glide:3.7.0'
}
配置好之后,as 会报个错,右上角一般会出现一个sysc now。点击这个东西。系统会自动帮我们下载glide,并且引入项目的,等系统下载一会就好了,一般都很快。
这里要注意一点就是应用在网上下载东西是需要配置网络权限的,这个我写在文章最后了。
配置好之后我们就去看看如何使用Glide吧。
使用Glide一般需要两个东西
第一个很重要就是我们要显示图片的ImageView 告诉Glide在哪个控件上显示图片。
第二个就是显示图片的来源,如果是网络图片,一般就是一个url地址,如果是资源文件,一般就是一个图片资源的id。这里拿图片的url举个例子,看看如何使用,真的非常简单
//Glide使用时候需要一个Context传入就行。Activity一般就可以。
Glide.with(context).load(myUrl).into(imageView);
一般一行代码就把帮我们从网上下载图片,保存到本地,然后显示在ImageView 上了。
下面给一个比较完整的效果把
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 这个是从布局获取ImageView
ImageView imageView = (ImageView) findViewById(R.id.imageView);
// 我找了一个图片的url链接,可以在浏览器上直接看的
String imageUrl = "http://img1.gtimg.com/gamezone/pics/hv1/143/207/1845/120024053.jpg";
Glide.with(this).load(imageUrl).into(imageView);
}
}
运行之后imageView 会显示这个链接的图片。
今天只讲最简单的。
Android请求网络权限
在AndroidManiifest中添加