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

Android中如何使用Glide v4实现图片圆形变换显示

Glide v4 圆形图片加载及参数说明

一、Glide.with() 入参选择说明

Glide.with() 支持多种入参类型,this 是否可以直接使用取决于你编写代码的上下文:

  • 如果你在 Activity 中编写代码,直接传 this 即可,此时this本身就是Activity Context实例,Glide会自动绑定Activity生命周期,页面销毁时自动终止加载任务,避免内存泄漏
  • 如果你在 Fragment 中编写代码,也可以直接传this,Glide会绑定Fragment的生命周期
  • 如果你在非页面类(比如列表Adapter、工具类)中编写代码,就需要传入Context实例,常见获取方式如下:
    • 从Adapter构造方法传入宿主Activity/Fragment的context,或者直接用列表Item的View实例获取:itemView.getContext()
    • 工具类场景可以传入全局Application Context,注意该场景下Glide的加载生命周期会和应用进程绑定,只有进程终止才会取消加载,适合不需要和页面生命周期绑定的全局加载场景
    • 禁止使用无有效生命周期管控的静态Context引用,避免内存泄漏

二、Glide v4 正确实现圆形图片显示的方式

你现有代码的圆形裁剪逻辑基本正确,仅存在冗余声明RequestOptions options未使用的问题,可以删除冗余代码,也可以把所有配置整合到RequestOptions中统一管理,两种正确写法如下:

最简内联写法

// Activity/Fragment场景下传this,其他场景替换为对应Context即可
Glide.with(this)
     .load(urlProfileImg)
     .apply(RequestOptions.circleCropTransform())
     .diskCacheStrategy(DiskCacheStrategy.ALL)
     .into(imgProfile);

复用配置写法(适合多处使用圆形裁剪的场景)

// 全局复用的圆形裁剪配置
RequestOptions circleCropOptions = new RequestOptions()
        .circleCrop()
        .diskCacheStrategy(DiskCacheStrategy.ALL);

// 加载时直接传入统一配置
Glide.with(context)
     .load(urlProfileImg)
     .apply(circleCropOptions)
     .into(imgProfile);

异常排查

如果出现圆形裁剪不生效的情况,优先检查两点:

  • 不要给ImageView设置scaleType="fitXY",推荐使用centerCrop或者默认scaleType
  • 透明背景PNG图出现圆形边缘黑边的话,添加.dontAnimate()配置取消默认过渡动画即可解决

内容的提问来源于stack exchange,提问作者rahul tripathi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:54:03