LruCache、Glide和SmartRefreshLayout使用总结

(一)Android智能下拉刷新框架-SmartRefreshLayout

https://github.com/scwang90/SmartRefreshLayout?tab=readme-ov-file
(二)LruCache使用

使用它可以进行图片的内存缓存

java 复制代码
public class ImageLoaderUtil {
    private LruCache<String, Bitmap> mLruCache;

    /**
     * 构造函数
     */
    public ImageLoaderUtil () {
        //设置最大缓存空间为运行时内存的 1/8
        int maxMemory = (int) Runtime.getRuntime().maxMemory();
        int cacheSize = maxMemory / 8;
        mLruCache = new LruCache<String, Bitmap>(cacheSize) {
            @Override
            protected int sizeOf(String key, Bitmap value) {
                //计算一个元素的缓存大小
                return value.getByteCount();
            }
        };

    }

    /**
     * 添加图片到 LruCache
     *
     * @param key
     * @param bitmap
     */
    public void addBitmap(String key, Bitmap bitmap) {
        if (getBitmap(key) == null) {
            mLruCache.put(key, bitmap);
        }
    }

    /**
     * 从缓存中获取图片
     *
     * @param key
     * @return
     */
    public Bitmap getBitmap(String key) {
        return mLruCache.get(key);
    }

    /**
     * 从缓存中删除指定的 Bitmap
     *
     * @param key
     */
    public void removeBitmapFromMemory(String key) {
        mLruCache.remove(key);
    }
}

(三)Glide使用

Glide是一个快速高效的Android图片加载库,可以自动加载网络,本地文件,app资源中的图片。

Glide第一次加载一张图片后,就会自动帮我们把这张图片加入到内存中进行管理了

Glide基本使用

导入 implementation 'com.github.bumptech.glide:glide:4.15.1'

最简单的使用

with()里面传入activity/fragment上下文、view都可以,它是一个重载方法

load()里面传图片,可以是drawable/mipmap里面图片/网络图片、本地图片

into()里放要显示图片的ImageView

java 复制代码
Glide.with(this)
        .load(R.drawable.dp)
        .into(image);

进阶

1>Glide4中占位图的使用方法,包括(placeholder,error,fallback)三种占位图,一般在请求网络图片的时候使用

paceholder:正在请求图片的时候展示的图片

error:如果请求失败的时候展示的图片(如果没有设置,还是展示placeholder的占位符)

fallback:如果请求的url/model为null的时候展示的图片(如果没有设置,还是展示paceholder的占位符)

java 复制代码
   //编写占位符
    RequestOptions requestOptions = new RequestOptions()
            .placeholder(R.drawable.ic_launcher_foreground)
            .error(R.mipmap.ic_launcher)
            .fallback(R.drawable.ic_launcher_foreground)
            .override(100, 100); // override 指定加载图片大小
    //Glide里面加入apply(占位符)应用占位符
    Glide.with(this)
         .load(R.drawable.dp)
		 .apply(requestOptions)
		 .into(image);

2>变换

获取资源并修改它,然后返回被修改后的资源。通过变换操作是用来完成裁剪或对位图应用过滤器。比如图片进行圆角配置

通过transform()属性来实现。

java 复制代码
//CircleCrop()圆角
Glide.with(this)
        .load(R.drawable.dp)
        .transform(new CircleCrop())//图片以圆角的方式
        .into(image);

//RoundedCorners四个角度统一指定
Glide.with(this)
        .load(R.drawable.dp)
        .transform(new RoundedCorners(100))
        .into(image);

//Rotate 旋转
Glide.with(this)
        .load(R.drawable.dp)
        .transform(new Rotate(90))//顺时针旋转90°
        ,into(image);
相关推荐
张云瀚4 天前
Glide源码解析
源码分析·glide
锐湃4 天前
使用glide 同步获取图片
glide
每次的天空14 天前
Android-Glide学习总结
android·学习·glide
每次的天空24 天前
Android学习总结之Glide自定义三级缓存(面试篇)
android·学习·glide
WenGyyyL1 个月前
《Android 应用开发基础教程》——第十一章:Android 中的图片加载与缓存(Glide 使用详解)
android·缓存·glide
microhex1 个月前
Glide 如何加载远程 Base64 图片
java·开发语言·glide
8931519601 个月前
Android开发Glide做毛玻璃效果
android·glide·android开发·android教程·glide做毛玻璃效果
每次的天空1 个月前
Android学习总结之Glide篇(缓存和生命周期)
android·学习·glide
卑微小文2 个月前
Scrapy+Redis:如何用代理IP池突破反爬机制
intellij idea·glide
&有梦想的咸鱼&3 个月前
Android Glide 的显示与回调模块原理源码级深度剖析
android·glide