• 图片加载库Glide的封装工具类,方便以后使用


    直接上源码。注释得已经很清晰了,直接调用即可。

      1 package com.liuguilin.lovewallpaper.utils;
      2 /*
      3  *  Created by 火龙裸先生 on 2017/3/3 0003.
      4  */
      5 
      6 import android.content.Context;
      7 import android.widget.ImageView;
      8 
      9 import com.bumptech.glide.Glide;
     10 import com.bumptech.glide.Priority;
     11 import com.bumptech.glide.load.engine.DiskCacheStrategy;
     12 import com.bumptech.glide.load.resource.drawable.GlideDrawable;
     13 import com.bumptech.glide.request.RequestListener;
     14 import com.bumptech.glide.request.target.SimpleTarget;
     15 
     16 public class GlideUtils {
     17 
     18     /**
     19      * Glide特点
     20      * 使用简单
     21      * 可配置度高,自适应程度高
     22      * 支持常见图片格式 Jpg png gif webp
     23      * 支持多种数据源  网络、本地、资源、Assets 等
     24      * 高效缓存策略    支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半
     25      * 生命周期集成   根据Activity/Fragment生命周期自动管理请求
     26      * 高效处理Bitmap  使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力
     27      * 这里默认支持Context,Glide支持Context,Activity,Fragment,FragmentActivity
     28      */
     29 
     30     //默认加载
     31     public static void loadImageView(Context mContext, String path, ImageView mImageView) {
     32         Glide.with(mContext).load(path).into(mImageView);
     33     }
     34 
     35     //加载指定大小
     36     public static void loadImageViewSize(Context mContext, String path, int width, int height, ImageView mImageView) {
     37         Glide.with(mContext).load(path).override(width, height).into(mImageView);
     38     }
     39 
     40     //填充
     41     public static void loadImageCrop(Context mContext, String path, ImageView mImageView) {
     42         Glide.with(mContext).load(path).centerCrop().diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView);
     43     }
     44 
     45     //设置加载中以及加载失败图片
     46     public static void loadImageViewLoding(Context mContext, String path, ImageView mImageView, int lodingImage, int errorImageView) {
     47         Glide.with(mContext).load(path).placeholder(lodingImage).error(errorImageView).into(mImageView);
     48     }
     49 
     50     //设置加载中以及加载失败图片并且指定大小
     51     public static void loadImageViewLodingSize(Context mContext, String path, int width, int height, ImageView mImageView, int lodingImage, int errorImageView) {
     52         Glide.with(mContext).load(path).override(width, height).placeholder(lodingImage).error(errorImageView).into(mImageView);
     53     }
     54 
     55     //设置跳过内存缓存
     56     public static void loadImageViewCache(Context mContext, String path, ImageView mImageView) {
     57         Glide.with(mContext).load(path).skipMemoryCache(true).into(mImageView);
     58     }
     59 
     60     //设置下载优先级
     61     public static void loadImageViewPriority(Context mContext, String path, ImageView mImageView) {
     62         Glide.with(mContext).load(path).priority(Priority.NORMAL).into(mImageView);
     63     }
     64 
     65     /**
     66      * 策略解说:
     67      * <p>
     68      * all:缓存源资源和转换后的资源
     69      * <p>
     70      * none:不作任何磁盘缓存
     71      * <p>
     72      * source:缓存源资源
     73      * <p>
     74      * result:缓存转换后的资源
     75      */
     76 
     77     //设置缓存策略
     78     public static void loadImageViewDiskCache(Context mContext, String path, ImageView mImageView) {
     79         Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.ALL).into(mImageView);
     80     }
     81 
     82     /**
     83      * api也提供了几个常用的动画:比如crossFade()
     84      */
     85 
     86     //设置加载动画
     87     public static void loadImageViewAnim(Context mContext, String path, int anim, ImageView mImageView) {
     88         Glide.with(mContext).load(path).animate(anim).into(mImageView);
     89     }
     90 
     91     /**
     92      * 会先加载缩略图
     93      */
     94 
     95     //设置缩略图支持
     96     public static void loadImageViewThumbnail(Context mContext, String path, ImageView mImageView) {
     97         Glide.with(mContext).load(path).thumbnail(0.1f).into(mImageView);
     98     }
     99 
    100     /**
    101      * api提供了比如:centerCrop()、fitCenter()等
    102      */
    103 
    104     //设置动态转换
    105     public static void loadImageViewCrop(Context mContext, String path, ImageView mImageView) {
    106         Glide.with(mContext).load(path).centerCrop().into(mImageView);
    107     }
    108 
    109     //设置动态GIF加载方式
    110     public static void loadImageViewDynamicGif(Context mContext, String path, ImageView mImageView) {
    111         Glide.with(mContext).load(path).asGif().into(mImageView);
    112     }
    113 
    114     //设置静态GIF加载方式
    115     public static void loadImageViewStaticGif(Context mContext, String path, ImageView mImageView) {
    116         Glide.with(mContext).load(path).asBitmap().into(mImageView);
    117     }
    118 
    119     //设置监听的用处 可以用于监控请求发生错误来源,以及图片来源 是内存还是磁盘
    120 
    121     //设置监听请求接口
    122     public static void loadImageViewListener(Context mContext, String path, ImageView mImageView, RequestListener<String, GlideDrawable> requstlistener) {
    123         Glide.with(mContext).load(path).listener(requstlistener).into(mImageView);
    124     }
    125 
    126     //项目中有很多需要先下载图片然后再做一些合成的功能,比如项目中出现的图文混排
    127 
    128     //设置要加载的内容
    129     public static void loadImageViewContent(Context mContext, String path, SimpleTarget<GlideDrawable> simpleTarget) {
    130         Glide.with(mContext).load(path).centerCrop().into(simpleTarget);
    131     }
    132 
    133     //清理磁盘缓存
    134     public static void GuideClearDiskCache(Context mContext) {
    135         //理磁盘缓存 需要在子线程中执行
    136         Glide.get(mContext).clearDiskCache();
    137     }
    138 
    139     //清理内存缓存
    140     public static void GuideClearMemory(Context mContext) {
    141         //清理内存缓存  可以在UI主线程中进行
    142         Glide.get(mContext).clearMemory();
    143     }
    144 }
  • 相关阅读:
    Android在layout xml中使用include完成静态加载
    ImageSwitch图像切换控件
    合并石子大总结
    子矩阵(暴搜(全排列)+DP)
    回路(一笔画问题)
    道路重建(记忆化搜索+贪心)
    【NOIP2013 普及组】车站分级
    UML的基本关联
    Matlab画图-非常具体,非常全面
    面向对象程序设计与面向过程程序设计解析
  • 原文地址:https://www.cnblogs.com/huolongluo/p/6498907.html
Copyright © 2020-2023  润新知