【封装】图片加载框架Glide使用

一直在用UIL( Android-Universal-Image-Loader)加载图片,自我感觉加载使用还不错,后来同事告诉我有个新玩意Glide,于是我就搜了下这个东西,发现确实好用太多了,在说Glide框架之前,先来看看一些主流的图片框架,这样你也可以去搜搜别的框架,然后学到东西也能写个文章来分享下。

 

图片主流加载框架:

名称

描述

Android Universal Image Loader

一个强大的加载,缓存,展示图片的库

Picasso

一个强大的图片下载与缓存的库

Fresco

一个用于管理图像和他们使用的内存的库

Glide

一个图片加载和缓存的库

 

 

Android Universal Image Loader

ImageLoder的配置很多,所以灵活度较高。

Picasso

Square公司的开源项目可以与旗下的各种框架整合使用,例如okhttp。

Fresco

Facebook公司出品的一个功能强大的框架,其内置的SimpleDraweeView可以实现很多种图片样式,其在5.0以下的内存优化很好。

Glide

Gilde的使用很像是Picasso,所以你掌握了他们其中一个的话,另一个很快就能掌握了,这个是谷歌官方推荐使用的图片加载框架,它与Picasso的不同点在于内存上的优化,Picasso默认的bitmap格式为ARGB_8888,而Gilde的Bitmap格式为RGB_565,所以Picasso的内存消耗要比Gilde的消耗大上一半。

开始使用Gilde

1.基本使用

首先我们来加载一张很简单的网络图片

 代码:

package com.yckj.project.activity;

import com.bumptech.glide.Glide;
import com.yckj.project.R;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;

public class LoadPictureActivity extends Activity{
	private ImageView imageView;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_imageview);
		imageView = (ImageView) findViewById(R.id.img);//初始化View
		String url = "http://neitui123-data.stor.vipsinaapp.com/neitui/company/104654/photo_icon.png";
		Glide.with(this).load(url).into(imageView);//加载图片
	}
}
布局文件:

 




    


2.其他使用方法

其余的使用方法有很多,所以这里我直接给出封装好的工具类,如果你有兴趣也可以自己手动来使用下

import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;

import android.content.Context;
import android.widget.ImageView;

/**
 * 开源图片框架Gilde工具类
 */
public class GildeUtils {
	/**
	 * 加载图片
	 * 
	 * @param url
	 * @param context
	 * @param imageView
	 */
	public static void loadImage(String url, Context context, ImageView imageView) {
		Glide.with(context).load(url).into(imageView);
	}

	/**
	 * 
	 * 是否禁止磁盘缓存加载图片
	 * 
	 * @param url
	 * @param context
	 * @param imageView
	 * @param type
	 *            缓存的类型
	 *            
  • 磁盘缓存全部 DiskCacheStrategy.ALL
  • *
  • 磁盘禁止缓存DiskCacheStrategy.NONE
  • */ public static void loadImage(String url, Context context, ImageView imageView, DiskCacheStrategy type) { Glide.with(context).load(url).diskCacheStrategy(type).into(imageView); } /** * * 是否禁止内存缓存加载图片 * * @param url * @param context * @param imageView * @param skipMemoryCache * 禁止内存缓存 true为禁止 */ public static void loadImage(String url, Context context, ImageView imageView, boolean skipMemoryCache) { Glide.with(context).load(url).skipMemoryCache(skipMemoryCache).into(imageView); } /** * * 是否禁止内存/磁盘缓存加载图片 * * @param url * @param context * @param imageView * @param type * 缓存的类型 *
  • 磁盘缓存全部 DiskCacheStrategy.ALL
  • *
  • 磁盘禁止缓存DiskCacheStrategy.NONE
  • * @param skipMemoryCache * 禁止内存缓存 true为禁止 */ public static void loadImage(String url, Context context, ImageView imageView, DiskCacheStrategy type, boolean skipMemoryCache) { Glide.with(context).load(url).skipMemoryCache(skipMemoryCache).diskCacheStrategy(type).into(imageView); } /** * 清除内存中的缓存 必须在UI线程中调用 * * @param context */ public static void clearMemory(Context context) { Glide.get(context).clearMemory(); } /** * 清除磁盘中的缓存 必须在后台线程中调用,建议同时clearMemory() * * @param context */ public static void clearDiskCache(Context context) { Glide.get(context).clearDiskCache(); } /** * 优先级加载图片 * @param url * @param context * @param imageView * @param priority 优先级 Priority.LOW/Priority.HIGH */ public static void loadImageWithPriority(String url, Context context, ImageView imageView,Priority priority) { Glide.with(context).load(url).priority(priority).into(imageView); } }
    运行效果:

    【封装】图片加载框架Glide使用_第1张图片

    Github地址:https://github.com/bumptech/glide


    参考文章:

    http://www.spotty.com.cn/archives/361/

    http://blog.csdn.net/richiezhu/article/details/46968569

     

    你可能感兴趣的:(Android)