【问题标题】:How to Show GIF inside a Dialog with help of glide lib如何在 glide lib 的帮助下在对话框中显示 GIF
【发布时间】:2019-10-30 15:06:15
【问题描述】:

我试图在我的应用程序的加载对话框中显示 GIF,我正在使用 glide 图像库,因为它支持 GIFS。当我试图在对话框中显示 GIF 时,它不会显示 GIF,只显示对话框背景。我一直在寻找,但我没有找到一个好的解决方案。

下面是我的对话框代码

class ShowProgress(context: Context) : Dialog(context) {

var dialog: Dialog? = null
var imageView: ImageView? = null

init {
    dialog = Dialog(context)
    imageView = findViewById(R.id.glideImage)
}

fun showDialog(context: Context) {
    val dialogView = LayoutInflater.from(context).inflate(R.layout.progress_layout, null, false)
    imageView?.let { Glide.with(context).asGif().placeholder(R.drawable.redbull).into(it) }
    dialog?.setCancelable(false)
    dialog?.setContentView(dialogView)
    dialog?.show()

}

【问题讨论】:

    标签: android android-layout kotlin android-glide android-dialog


    【解决方案1】:

    如果我错了,有人可以纠正我,但开箱即用的ImageView 不支持 Gif 格式。

    您需要查看其他格式,例如将其托管在 WebView 或使用如下库:https://github.com/koral--/android-gif-drawable

    从 2013 年开始,ImageView 不支持 Gif:https://stackoverflow.com/a/16486771/413127

    Android P 做 Gif 的方式:https://medium.com/appnroll-publication/what-is-new-in-android-p-imagedecoder-animatedimagedrawable-a65744bec7c1


    我会纠正自己(是的,它不支持,但是):

    看起来Glide 本身做了一些魔术来制作 Gif Drawable,请参见此处:https://stackoverflow.com/a/34870817/413127

    所以对于你的例子:

        GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(imageView);
        imageView?.let { Glide.with(context).asGif().placeholder(R.drawable.redbull).into(imageViewTarget) }
    

    【讨论】:

    • 我用 GlidedrawableImageviewTarget 尝试了你的方法,但效果不佳。我什至在一个新项目上试用了 Glide,它使用这行代码 Glide.with(applicationContext).asGif().load(R.drawable.redbull).into(imageView),这在我看来很奇怪
    • 尝试使用 Glide 将普通图像加载到 Dialog 中,看看问题是否出在 gif 上。还可以尝试加载静态图像,看看 Glide 是否有问题。
    • 我照你说的做了,仍然没有显示图像,当我将 android:src 放在 xml 布局中时,我可以得到显示的图像,但这不是必需的
    • 确定是R.id.glideImageR.layout.progress_layout 内吗?即不是在init 中找到imageView,而是在showDialogdialogView.findViewById(R.id.glideImage) 中找到它
    • 是的,我也试过了,但没用。我升技现在迷路了,如何解决这个问题很奇怪
    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多