Android 在RecyclerView适配器中加载了Glide的Gif无法正常播放
我有一个recyclerview,它在水平视图中显示图像列表。我想在每个图像视图周围显示一个gif,就像一个与instagram的故事视图类似的轮廓 下面是加载相同代码的代码Android 在RecyclerView适配器中加载了Glide的Gif无法正常播放,android,android-recyclerview,android-glide,android-viewholder,Android,Android Recyclerview,Android Glide,Android Viewholder,我有一个recyclerview,它在水平视图中显示图像列表。我想在每个图像视图周围显示一个gif,就像一个与instagram的故事视图类似的轮廓 下面是加载相同代码的代码 GlideApp .with(itemView.context).asGif() .load(R.drawable.red) .error(R.drawable.red) .diskCacheStrategy(DiskCacheStrategy.DATA)
GlideApp
.with(itemView.context).asGif()
.load(R.drawable.red)
.error(R.drawable.red)
.diskCacheStrategy(DiskCacheStrategy.DATA)
.into(ivBackground)
我尝试在两个位置添加此代码,即onCreateViewHolder
和onBindViewHolder
,但gif播放不正常
它一次只显示一帧。如果我通过按后退按钮暂停当前活动,然后从最近的应用程序菜单导航回该应用程序,然后显示下一帧
我的gif存储在drawable文件夹中,我的gif在活动/片段中正常工作
问题是它在recyclerview适配器中无法正常播放
这是完整的适配器类
class LiveViewAdapter(
val context: Context,
val liveList: ArrayList<DataItem>,
private val listener: LiveViewAdapterListener
) :
RecyclerView.Adapter<LiveViewHolder>() {
private val inflater: LayoutInflater
interface LiveViewAdapterListener {
fun onLiveClicked(url: String)
}
init {
inflater = LayoutInflater.from(context)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): LiveViewHolder {
val view = inflater.inflate(R.layout.item_live, parent, false)
return LiveViewHolder(view)
}
override fun getItemCount(): Int {
return liveList.size
}
override fun onBindViewHolder(holder: LiveViewHolder, position: Int) {
val requestOptions = RequestOptions().apply {
placeholder(R.mipmap.ic_launcher_round)
error(R.mipmap.ic_launcher_round)
}
val videoId = liveList[holder.adapterPosition].liveUrl?.substring(liveList[holder.adapterPosition].liveUrl?.lastIndexOf("=")!! + 1)
val imageUrl = "https://img.youtube.com/vi/$videoId/hqdefault.jpg"
Glide.with(context)
.load(liveList[position].liveUrl)
.apply(requestOptions)
.thumbnail(Glide.with(context).load(imageUrl))
.into(holder.ivLive)
holder.ivLive.setOnClickListener {
listener.onLiveClicked(liveList[holder.adapterPosition].liveUrl!!)
}
}
}
更新
我发现上面的代码在sdk版本低于pie的android设备上运行良好。在使用android pie的设备上,它工作不正常。您使用的是
roundedImageView
还是纯本机imageview
我在使用
roundedImageView
时遇到了同样的问题。我将其替换为本机的gif播放ImageView
。您使用的是哪个版本的Glide?我正在使用Glide在recyclerview中加载gif,我没有问题。GlideApp的代码似乎很完美。在RecyclerView.Adapter
@sanjeev添加了glide dependency中可能还有其他问题。我刚刚用它加载了一个gif,效果很好<代码>使用(getActivity()).load(myList.get(position.getBgimg()).into(holder.card_main)滑动代码>@sanjeev似乎是从url加载的。就我而言,我使用的是drawable
implementation 'com.github.bumptech.glide:glide:4.8.0'
kapt 'com.github.bumptech.glide:compiler:4.8.0'