封装图片加载框架Glide使用
Posted 风之叶语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装图片加载框架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
以上是关于封装图片加载框架Glide使用的主要内容,如果未能解决你的问题,请参考以下文章