Glide加载GIF

glide加载gif时,怎么监听gif动画播放完成? 
 我想要在播放gif动画完成后 添加一些事件
在 Android 开发中,Glide 是一个非常流行的图片加载库,支持加载 JPEG、PNG、WebP 等静态图片,也**原生支持 GIF 动图的加载和播放**。你只需要使用 Glide 的标准 API,它会自动识别 GIF 并进行播放。 以下是如何使用 Glide 加载并显示 GIF 图片的详细说明和代码示例: --- ### ✅ 使用 Glide 加载 GIF(Kotlin 示例) #### 1. 添加依赖 首先确保你的 `app/build.gradle` 文件中添加了 Glide 依赖: ```gradle dependencies { implementation 'com.github.bumptech.glide:glide:4.16.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0' } ``` > 如果使用 Kotlin,建议使用 `kapt` 替代 `annotationProcessor`: ```gradle apply plugin: 'kotlin-kapt' dependencies { implementation 'com.github.bumptech.glide:glide:4.16.0' kapt 'com.github.bumptech.glide:compiler:4.16.0' } ``` #### 2. 布局文件中使用 ImageView ```xml <ImageView android:id="@+id/imageView" android:layout_width="200dp" android:layout_height="200dp" android:scaleType="centerCrop" /> ``` > 注意:GIF 可能较大,设置合适的尺寸避免 OOM。 #### 3. 在 Activity 或 Fragment 中加载网络或本地 GIF ##### ✅ 加载网络 GIF ```kotlin import com.bumptech.glide.Glide import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import android.widget.ImageView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val imageView: ImageView = findViewById(R.id.imageView) // 网络 GIF 地址示例 val gifUrl = "https://example.com/animation.gif" Glide.with(this) .asGif() // 明确指定加载类型为 Gif .load(gifUrl) .placeholder(R.drawable.placeholder) // 可选:加载中的占位图 .error(R.drawable.error) // 可选:加载失败显示的图 .into(imageView) } } ``` ##### ✅ 加载应用内资源中的 GIF(res/drawable) 将 `test.gif` 放入 `res/drawable` 目录: ```kotlin Glide.with(this) .asGif() .load(R.drawable.test) .into(imageView) ``` ##### ✅ 加载本地存储中的 GIF(File 路径) ```kotlin val file = File("/sdcard/Pictures/anim.gif") Glide.with(this) .asGif() .load(file) .into(imageView) ``` --- ### 📌 关键点解释 - `.asGif()`:强制 Glide 将图片解析为 GifDrawable,确保动图播放。如果不加,Glide 可能只显示第一帧(作为静态图)。 - `.load(...)`:支持 URL、资源 ID、File、Uri 等多种数据源。 - 自动播放:Glide 默认加载后自动开始播放 GIF。 - 内存管理:Glide 会管理 GIF 的解码和内存使用,但大 GIF 仍可能引起卡顿或 OOM,注意压缩或限制大小。 --- ### ⚠️ 常见问题与解决方案 | 问题 | 解决方法 | |------|---------| | GIF 不动,只显示第一帧 | 忘记加 `.asGif()`,必须加上才能播放 | | 报错 `Failed to load resource` | 检查网络权限、URL 是否有效、文件是否存在 | | 卡顿或内存溢出 | 使用 `.override(300, 300)` 限制尺寸,或转为 WebP 动图优化 | --- ### 🔁 可选:控制 GIF 播放(暂停/恢复) 你可以获取 `GifDrawable` 来控制播放: ```kotlin Glide.with(this) .asGif() .load(gifUrl) .into(object : CustomTarget<GifDrawable>() { override fun onResourceReady(resource: GifDrawable, transition: Transition<in GifDrawable>?) { imageView.setImageDrawable(resource) // 手动控制播放 resource.start() // 自动播放 // resource.stop() // 暂停 } override fun onLoadCleared(placeholder: Drawable?) { imageView.setImageDrawable(placeholder) } }) ``` --- ### ✅ 总结 GlideGIF 的支持非常完善,只需: 1. 添加依赖; 2. 使用 `.asGif()` 明确声明; 3. 提供有效的 GIF 数据源。 即可实现流畅的 GIF 加载与播放。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值