需求:ListView 中異步加載圖片,避免滾動卡頓、圖片錯位、OOM。
github.com/yourname/ImageAsyncLoader(示例鏈接)// 1. build.gradle
implementation 'com.example:imageasyncloader:1.0.0'
// 2. Application 初始化
public class MyApp extends Application {
@Override public void onCreate() {
super.onCreate();
ImageAsyncLoader.init(this);
}
}
// 3. Adapter 中使用
public class MyAdapter extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) { ... }
String url = getItem(position);
ImageAsyncLoader.with(holder.imageView)
.load(url)
.placeholder(R.drawable.placeholder)
.error(R.drawable.error)
.into(holder.imageView); // 鏈式調用
return convertView;
}
}
imageView.setTag(url),回調前比對 Tag 防止列表復用導致圖片錯位。| 庫 | 特點 | 適用場景 |
|---|---|---|
| Glide | 全能、GIF/視頻幀、生命周期集成 | 通用首選 |
| Coil | Kotlin 協程、輕量、Compose 支持 | Kotlin/新項目 |
| Picasso | 簡潔、自動適配、無生命周期感知 | 簡單項目 |
生產環境**強烈建議直接使用成熟庫**,專注業務邏輯而非重造輪子。