您的位置:首页 > 移动开发 > Android开发

Android开发之图片加载框架Glide

2017-05-19 11:45 381 查看
Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。

目前,Glide最新的稳定版本是3.7.0,虽然3.8.0已经推出预览版了,但是暂时问题还比较多。因此,我们这个系列的博客都会使用Glide 3.7.0版本来进行讲解,这个版本的Glide相当成熟和稳定。

要想使用Glide,首先需要将这个库引入到我们的项目当中。

1,新建一个GlideTest项目,然后在app/build.gradle文件当中添加如下依赖:

compile 'com.github.bumptech.glide:glide:3.7.0'


2,在清单文件中,声明网络权限:

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


3,准备一张大图的地址如:

http://www.bz55.com/uploads/allimg/110901/1121101495-7.jpg


4,布局文件:

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
tools:context="com.gyq.glidetest.MainActivity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="加载图片"
android:onClick="loadImage" />

<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>


5,在MainActivity.java中使用:

package com.gyq.glidetest;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
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 = (ImageView)findViewById(R.id.image_view);
}

public void loadImage(View view) {
String url = "http://www.bz55.com/uploads/allimg/110901/1121101495-7.jpg";

Glide.with(this).load(url).into(imageView);    //一行代码搞定图片加载
}
}


首先,调用Glide.with()方法用于创建一个加载图片的实例。with()方法可以接收Context、Activity或者Fragment类型的参数。也就是说我们选择的范围非常广,不管是在Activity还是Fragment中调用with()方法,都可以直接传this。那如果调用的地方既不在Activity中也不在Fragment中呢?也没关系,我们可以获取当前应用程序的ApplicationContext,传入到with()方法当中。注意with()方法中传入的实例会决定Glide加载图片的生命周期,如果传入的是Activity或者Fragment的实例,那么当这个Activity或Fragment被销毁的时候,图片加载也会停止。如果传入的是ApplicationContext,那么只有当应用程序被杀掉的时候,图片加载才会停止。

接下来看一下load()方法,这个方法用于指定待加载的图片资源。Glide支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri对象等等。因此load()方法也有很多个方法重载,除了我们刚才使用的加载一个字符串网址之外,你还可以这样使用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);


6,扩展:占位图,显示错误图片,动态图,静态图等

Glide.with(this)
.load(url)
//.asBitmap()   //加载静态图,如果原图是动态图,则加载第一帧的静态图
.asGif()   //显示加载的图片为动态图,源图不是,就会出现error图
.placeholder(R.drawable.loading)   //在加载时,先给imageview一个默认图
.error(R.drawable.error)   //网络断开,或者这个activity退出,都会导致加载失败
.diskCacheStrategy(DiskCacheStrategy.NONE)  //清除缓存
.override(100, 100)   //给图片指定固定大小
.into(imageView);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: