You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glide 3.7.0升级4.13.0无法解析BitmapRequestBuilder如何适配

问题原因

Glide 从3.x版本升级到4.x版本做了大量API破坏性变更,原3.x版本中的BitmapRequestBuilder类已被移除,asBitmap()调用时机、同步加载目标的方法名也做了调整,直接复用3.x版本的写法会触发符号无法解析的报错。

注意:Glide 4.x中强制要求asBitmap()这类指定资源类型的方法,必须在load()方法之前调用,这也是之前在load()之后调用asBitmap()依旧报错的核心原因之一。

适配Glide 4.13.0的修改方案
  • 首先确认模块级build.gradle中的依赖配置正确:
dependencies {
    implementation 'com.github.bumptech.glide:glide:4.13.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
}
  • 替换原有代码逻辑,核心变更点:
    • 移除已废弃的BitmapRequestBuilder类型,改用RequestBuilder<Bitmap>作为构建器类型
    • 将asBitmap()调用移动到load()方法之前
    • 同步加载指定宽高图片时,用submit(int width, int height)替换原3.x版本的into(width, height)方法
    • 给FutureTarget指定Bitmap泛型,省去不必要的强转操作

修改后的可运行代码如下:

import android.content.Context;
import android.graphics.Bitmap;
import android.util.DisplayMetrics;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.FutureTarget;
import com.bumptech.glide.request.RequestBuilder;
// 替换为你项目中Constants类的实际包路径
import com.your.package.Constants;
import java.util.concurrent.ExecutionException;

private Bitmap loadImage(Context context, String pathName) throws ExecutionException, InterruptedException {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    
    RequestBuilder<Bitmap> builder = Glide.with(context)
            .asBitmap()
            .load(Constants.IMAGE_DOWNLOAD + pathName);
    
    FutureTarget<Bitmap> futureTarget = builder.submit(width, height);
    return futureTarget.get();
}

private Bitmap loadImageForNoti(Context context, String pathName) throws ExecutionException, InterruptedException {
    DisplayMetrics metrics = context.getResources().getDisplayMetrics();
    int width = metrics.widthPixels;
    int height = metrics.heightPixels;
    
    RequestBuilder<Bitmap> builder = Glide.with(context)
            .asBitmap()
            .load(pathName);
    
    FutureTarget<Bitmap> futureTarget = builder.submit(width, height);
    return futureTarget.get();
}
额外注意事项
  • 上述同步加载方法必须在子线程中调用,如果在主线程调用futureTarget.get()会触发线程阻塞,甚至导致ANR
  • 如果不需要严格指定加载宽高,可以直接调用无参的submit()方法,Glide会自动根据设备分辨率做适配
  • 如果需要配置占位图、错误图、缓存策略,可以在load()之后链式追加对应配置,逻辑和3.x版本基本一致

内容的提问来源于stack exchange,提问作者suraj gaikwad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 04:33:43