使用WebView显示GIF图片

12

请问有没有代码可以在webview中显示GIF图片(我已经能够使用png图像的帧动画来显示相同的内容)。现在我想找到一种方法来显示GIF图片,而不是再次加载帧或重复绘制图像!

7个回答

27

试试这个...

WebView wv = (WebView) findViewById(R.id.webView1);
wv.loadUrl("file:///android_asset/anim5.gif");

只需像这样从资产中调用您的GIF图像...


这将显示 GIF。然而,使 GIF 可见需要一些时间。我如何立即显示 GIF? - mrmoment
1
在我的项目中,放置android_asset目录的好地方是哪里?语法file:///android_asset让我相信android_asset在您的文件系统的根目录中,但如果我想检查资产并将其提交到我的存储库中,那么这种方法行不通... - dinosaur
可以工作,但问题在于图像可能会显得太小或被裁剪。上面的解决方案修复了这个问题,我猜。我使用了这个HTML来调整大小和居中图像:<html><head><style>body { margin: 0; } img { height: 100%; display: block; margin: 0 auto; }</style></head><body><img src="{{imgUrl}}"></body></html> - Ferran Maylinch
如果您想让GIF适应您的布局,请使用以下代码: WebView wb = new WebView(this); wb.getSettings().setLoadWithOverviewMode(true); wb.getSettings().setUseWideViewPort(true); - Ovais Chaudhry
https://stackoverflow.com/a/11962112/3260008 <-- 如果有人对"file:///android_asset"感到好奇,这个链接非常有用。 - undefined

18

在 Web View 中支持 Gifs。

编写以下 HTML 文件:

<html>
<body bgcolor="white">
    <table width="100%" height="100%">
        <tr>
            <td align="center" valign="center">
                <font color="gray">Some text you display</font>
                <br/>
                <br/>
                <br/>
                <br/>
                <br/>
                <img src="yourGIF.gif">
            </td>
        </tr>
    </table>
</body>

将其存储在应用程序的 "assets" 文件夹中,同时将您的 gif 存储在相同的文件夹中。 然后执行以下操作以显示它:

webview.loadUrl("file:///android_asset/your_html.html");

我按照你说的做了。在Eclipse的工作区窗口中,GIF清晰可见,而在模拟器显示中只显示了GIF的第一帧(没有动画!)。 - msumaithri
同样的事情在Android电子邮件应用程序中也适用。在消息加载之前,旋转器会旋转。是否有任何设置可以应用于webview? - Kantesh
它可以显示gif,但不能使gif(或webview)固定在分配给它的线性布局中,如果图像大于分配给它的大小,则webview会出现滚动条。请建议一种避免滚动并将webview固定在线性布局中的方法。 - Shruti Sharma
如果我的 GIF 文件不在 drawable 或 asset 文件夹中怎么办? - natsumiyu

4
这是Android中GIF的最佳解决方案:
将以下依赖项插入到您项目的build.gradle文件中。
dependencies {
    compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.+'
}

然后
The simplest way is to use GifImageView 

<pl.droidsonroids.gif.GifImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/src_anim"
    android:background="@drawable/bg_anim"
    />

如果android:src和/或android:background声明的图形是GIF文件,那么它们将被自动识别为GifDrawables并进行动画处理。如果给定的绘图不是GIF,则提到的视图将像普通的ImageView和ImageButton一样工作。
参考链接:https://github.com/koral--/android-gif-drawable

3

在Webview中加载gif并将其适应设备屏幕,无需任何HTML代码...尝试使用此代码

mWebView = ((CustomWebView)mRootView.findViewById(R.id.webview));
mWebView.loadUrl("file:///android_asset/file.gif");
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);

2

你不需要任何HTML代码...只需使用这一行即可

webViewControl.LoadUrl("file://" + pathToTheGifFile);

这适用于我。


1

是的,这是正确的,GIF在Android上不支持。 另一个解决方案是使用TRonZ WebView支持gif,只需创建一个WebView加载gif图像的URL即可完成。


1
即使在2.3版本中,GIF仍然不被支持? - msumaithri
嘿,但是WebView支持gif格式图像,只需创建一个WebView并加载gif图像的URL即可搞定。 - TRonZ

0

将您的GIF文件保存在Assets文件夹中。这里的文件名是"loading.gif"。

    WebView webView=new WebView();
    Content = webView;

    webView.Source = new HtmlWebViewSource
    {
        Html = $"<body\"><img src=\"loading.gif\"/></body>"
    };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接