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

使用Glide通过URL加载GIF失败问题求助

无法用Glide加载GIF,仅显示静态图片

我尝试通过API获取的链接展示GIF,但输出里只能显示静态图,GIF动不起来。试过Stack Overflow上的相关代码,没解决问题。下面是我的ViewHolder类代码和XML布局文件:

ViewHolderClass代码

class GifAdapter:RecyclerView.Adapter<GifAdapter.GifViewHolder>() {
    private val items = mutableListOf<Data>()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GifViewHolder {
        val inflater = LayoutInflater.from(parent.context)
        val view = inflater.inflate(R.layout.gifsdisplaypattern,parent,false)
        return GifViewHolder(view)
    }

    override fun onBindViewHolder(holder: GifViewHolder, position: Int) {
        val currentItem = items[position]
//        val avatar_url = currentItem.user.avatar_url
        Glide.with(holder.itemView.context).asGif().load("https://giphy.com/embed/cBnSvKscZProc").into(holder.gif)
        Log.d("Avatarurl",currentItem.embed_url)
//        Glide.with(holder.itemView.context).load(currentItem.user.profile_url).into(holder.UserImage)
    }

    override fun getItemCount(): Int {
        Log.d("Rohit", items.size.toString())
        return items.size
    }
    fun initData(itemsList: List<Data>):Unit{
        this.items.clear()
        this.items.addAll(itemsList)
        notifyDataSetChanged()
    }

    class GifViewHolder(itemView:View):RecyclerView.ViewHolder(itemView) {
        val gif = itemView.findViewById<ImageView>(R.id.tv_Image)
        val UserImage:ImageView =itemView.findViewById(R.id.usr_img)
    }

}

XML布局文件

<androidx.cardview.widget.CardView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_margin="10dp"
        android:elevation="10dp"
        app:cardCornerRadius="10dp"
        >

<!--        <androidx.appcompat.widget.AppCompatImageView-->
<!--            android:id="@+id/tv_Image"-->
<!--            android:layout_width="match_parent"-->
<!--            android:layout_height="match_parent"-->
<!--            android:scaleType="centerCrop"-->
<!--            />-->
        <ImageView
            android:id="@+id/tv_Image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            />

此前我使用data类中的currentItem.embed_url代替GIF链接也无效,直接使用链接同样无法显示GIF,不清楚问题所在,附上输出截图:
Glide输出截图


问题排查与解决办法

1. 核心问题:使用了错误的链接类型

你当前用的https://giphy.com/embed/cBnSvKscZProc是Giphy的网页嵌入链接,不是直接的GIF资源文件地址。Glide无法从网页链接中解析出动态GIF,你需要改用Giphy API返回的直接GIF资源链接,比如images.fixed_height.url或images.original.url这类字段,它们的值是类似https://media1.giphy.com/media/cBnSvKscZProc/giphy.gif的直接可加载地址。

2. 调整Glide加载逻辑并添加错误监听

修改onBindViewHolder中的加载代码,替换为正确的资源链接,并添加监听排查问题:

Glide.with(holder.itemView.context)
    .asGif()
    .load(currentItem.images.fixed_height.url) // 替换为你data类中对应的GIF资源字段
    .listener(object : RequestListener<GifDrawable> {
        override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<GifDrawable>?, isFirstResource: Boolean): Boolean {
            Log.e("GlideGIFError", "加载失败原因: ${e?.message}")
            return false
        }

        override fun onResourceReady(resource: GifDrawable?, model: Any?, target: Target<GifDrawable>?, dataSource: DataSource?, isFirstResource: Boolean): Boolean {
            Log.d("GlideGIFSuccess", "GIF加载完成")
            return false
        }
    })
    .into(holder.gif)

3. 替换为AppCompatImageView

将XML中的ImageView替换为AppCompatImageView,它对动态图片的支持更稳定:

<androidx.appcompat.widget.AppCompatImageView
    android:id="@+id/tv_Image"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerCrop" />

4. 清理Glide缓存

如果之前加载过静态资源导致缓存干扰,可以调用以下代码清理缓存(建议仅测试时使用):

// 在合适的上下文(比如Activity)中调用
Glide.get(this).clearDiskCache()
Glide.get(this).clearMemory()

5. 确认Glide依赖版本

检查你的build.gradle(Module级)中Glide依赖是否为最新稳定版,避免版本兼容问题:

implementation 'com.github.bumptech.glide:glide:4.16.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:00:57