(一)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);