webview中的android- load gif动画

时间:2015-08-27 18:58:24

标签: android animation webview

我正在WebView中显示一个gif文件。

enter image description here

在我的网页完成加载之前,此gif是可见的。

我是通过以下方式进行的:

第一种方法:在Webview中加载gif

我已将loading.gif放在asset文件夹中。

XML:

<WebView
    android:id="@+id/webview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="2dp"
    android:layout_centerHorizontal="true"/>

爪哇:

wv.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            WebView loading = (WebView)findViewById(R.id.webview1);
            loading.loadUrl("file:///android_asset/loading.GIF");
            loading.setBackgroundColor(Color.TRANSPARENT);
            loading.setVisibility(View.VISIBLE);
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            WebView loading = (WebView)findViewById(R.id.webview1);
            loading.setVisibility(View.INVISIBLE);
        }

    });

第二种方法:在ImageView中加载gif帧

XML:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
    <item android:drawable="@drawable/frame1" android:duration="50" />
    <item android:drawable="@drawable/frame2" android:duration="50" />
    <item android:drawable="@drawable/frame3" android:duration="50" />
    etc...
</animation-list>

爪哇:

imageView.setBackgroundResource(R.drawable.movie);
AnimationDrawable anim = (AnimationDrawable) imageView.getBackground();
anim.start();

但两种情况下动画都不顺畅。虽然它在第二种方法中更好。我只是想知道是否有任何方法可以在没有gif的情况下实现相同的效果?如果那不可能那么,我想知道gif在所有像素密度下是否具有相同的大小。由于gif文件的维度位于px而不是dp

1 个答案:

答案 0 :(得分:0)

这是

的一个例子

如何将gif加载到WebView

使用.gif文件的地址创建html:

<html style="margin: 0;">
<body style="margin: 0;">
<img src="https://..../myimage.gif" style="width: 100%; height: 100%" />
</body>
</html>

将此文件存储到assets目录中:

enter image description here

将此html加载到应用程序的WebView中:

    WebView webView =  (WebView)findViewById(R.id.webView);
    webView = (WebView) findViewById(R.id.webView);
    webView.loadUrl("file:///android_asset/html/webpage_gif.html");

Heres是complete example of two options (using WebView or ImageView) to load an animated gif

enter image description here