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);
相关推荐
zhangphil10 天前
Android Glide动态apply centerCropTransform(),transition withCrossFade动画,Kotlin
android·glide
我怀里的猫10 天前
glide ModelLoader的Key错误使用 可能造成的内存泄漏
android·kotlin·glide
我怀里的猫10 天前
glide性能优化实战
性能优化·glide
命运之手3 个月前
【Android】Glide模块工作原理
android·module·glide·工作原理·decoder
android1573 个月前
Android开发:Glide基本使用以及加载https图片(配合OkHttp实现)
android·okhttp·glide
bright7894 个月前
新版Glide检测生命周期原理
android·安卓·glide
Sca_杰5 个月前
vue使用glide.js实现轮播图(可直接复制使用)
javascript·vue.js·glide
zhangphil5 个月前
Android Glide, first start based on loadThumbnail, Kotlin(二)
android·kotlin·glide
2401_856403035 个月前
AndroidX中Glide包冲突问题(1)
glide·androidx