【封装】图片加载框架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);//加载图片
	}
}
布局文件:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="loading_image" />

</LinearLayout>

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
	 *            缓存的类型
	 *            <li>磁盘缓存全部 DiskCacheStrategy.ALL</li>
	 *            <li>磁盘禁止缓存DiskCacheStrategy.NONE</li>
	 */
	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
	 *            缓存的类型
	 *            <li>磁盘缓存全部 DiskCacheStrategy.ALL</li>
	 *            <li>磁盘禁止缓存DiskCacheStrategy.NONE</li>
	 * @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);
	}
}
运行效果:



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


参考文章:

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

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值