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);
相关推荐
袁震15 小时前
Android-Glide缓存机制
android·缓存·移动开发·glide
袁震5 天前
Android-Glide详解二
android·移动开发·glide
袁震6 天前
Android-Glide详解
android·移动开发·glide
飞翔的时光机7 天前
Glide 加载图片并应用滤镜效果
glide
zhangphil17 天前
Android矩阵Matrix实现Glide图像fitCenter转换为centerCrop,Kotlin
android·kotlin·glide
zhangphil25 天前
Android Glide批量加载Bitmap,拼接组装大Bitmap,更新单个AppCompatImageView,Kotlin(2)
android·kotlin·glide
鸡鸭扣25 天前
网络药理学之薛定谔Schrödinge Maestro:6、分子对接(Glide、Ligand docking)和可视化
glide·生物信息学·生信·分子对接·薛定谔·网络药理学·maestro
zhangphil1 个月前
Android Glide load origin Bitmap, Kotlin
android·kotlin·glide
dreamsever1 个月前
Glide源码学习
android·java·学习·glide
zhangphil1 个月前
Android Glide动态apply centerCropTransform(),transition withCrossFade动画,Kotlin
android·glide