在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫
Glide
的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。
所以说gilde同volley一样是Google的亲儿子,是google主推的图片加载库。
1,同过AS下载gilde
compile 'com.github.bumptech.glide:glide:3.7.0'
2,这个别忘了,不要粗心哦,很容易忘得,最简单的问题,往往需要最简单的搞定啦。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" />3.布局就很好写了,如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/imageview_activity_main"
android:layout_width="100dp"
android:layout_height="100dp" />
</LinearLayout>
4.下面看Activity的主代码,非常简单的一句话就搞定了,
(1)加载资源文件,当然也可以换成是drawable底下的图片。
(2)加载文件中的图片,前提文件中必须有图片,没有效果图,但是只要文件路径对了,一定可以的。ImageView iv = (ImageView) findViewById(R.id.imageview_activity_main); //加载资源中的图片 Glide.with(this).load(R.mipmap.ic_launcher).into(iv);//mipmap底下的资源文件
效果如下:
![]()
//加载文件中的图片
File file = new File(Environment.getExternalStorageDirectory().getPath() + path);
Glide.with(context).load(file).into(iv);
(3)加载uri图片路径,效果图如下,这个应该不是很常用。
public static final String RESOURCE = "android.resource://";
public static final String SLASH = "/";
private int resId = R.mipmap.ic_launcher;
//加载Uri中的图片
Uri uri = Uri.parse(RESOURCE + getPackageName() + SLASH + resId);
Glide.with(context).load(uri).into(iv);
(4)加载网络图片,这里提供一个最简单的用法。
private String url_img = "http://p4.so.qhimg.com/t010c102c7b029340d4.jpg";
//加载网络图片
Glide.with(context).load(url_img).into(iv);
(5)加载gif图片
private String url_gif = "http://pic.uuhy.com/uploads/2011/02/11/005.gif";
//加载Gif图片
// Glide.with(context).load(url_gif).into(iv);
gilde默认的 Bitmap格式是
RGB_565,所以开销比较小,oom异常的机会非常小。
Glide.with()使用,不仅限于context,如下也可以。
- with(Context context). 使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制。
- with(Activity activity).使用Activity作为上下文,Glide的请求会受到Activity生命周期控制。
- with(FragmentActivity activity).Glide的请求会受到FragmentActivity生命周期控制。
- with(android.app.Fragment fragment).Glide的请求会受到Fragment 生命周期控制。
- with(android.support.v4.app.Fragment fragment).Glide的请求会受到Fragment生命周期控制。
//圆形裁剪
Glide.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.bitmapTransform(new CropCircleTransformation(this))
.into(iv_0);
//圆角处理
Glide.with(this)
.load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
.bitmapTransform(new RoundedCornersTransformation(this,30,0, RoundedCornersTransformation.CornerType.ALL))
.into(iv_0);
当然gilde还要许多强大的功能,我在这里就不一一赘述了,这是最基本的用法,希望对初学者有一定的帮助。
最后附上源码地址: