使用WebView显示GIF图像

时间:2011-01-28 06:08:56

标签: android gif android-webview

有人可以提供代码在webview中显示GIF图像(我已经能够使用png图像的帧动画显示相同的内容)现在我想要一种方法来显示GIF图像而不是加载框架或绘图这些图像一次又一次!

8 个答案:

答案 0 :(得分:23)

试试这个..

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

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

答案 1 :(得分:16)

网页视图支持Gif。

编写一个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");

答案 2 :(得分:3)

这是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:backgroun d声明的drawable是GIF文件,那么它们将自动识别为GifDrawables 并且动画。如果给定的drawable不是GIF,那么提到的Views就像普通的ImageView和ImageButton一样。

https://github.com/koral--/android-gif-drawable

答案 3 :(得分:1)

是的,这是gif在android中不支持的权利 另一个解决方案作为TRonZ WebView支持gif,只需make a WebViewload the URL of the gif image即可完成

答案 4 :(得分:0)

您不需要任何HTML代码......只需使用此行

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

它适合我。

答案 5 :(得分:0)

在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);

答案 6 :(得分:0)

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

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

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

答案 7 :(得分:0)

在src文件夹下创建一个名为“ Utils”的程序包,并创建一个名为“ GifImageView”的类

public class GifImageView extends View {
    private InputStream mInputStream;
    private Movie mMovie;
    private int mWidth, mHeight;
    private long mStart;
    private Context mContext;
    public GifImageView(Context context) {
        super(context);
        this.mContext = context;
    }
    public GifImageView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }
    public GifImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.mContext = context;
        if (attrs.getAttributeName(1).equals("background")) {
            int id = Integer.parseInt(attrs.getAttributeValue(1).substring(1));
            setGifImageResource(id);
        }
    }
    private void init() {
        setFocusable(true);
        mMovie = Movie.decodeStream(mInputStream);
        mWidth = mMovie.width();
        mHeight = mMovie.height();
        requestLayout();
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(mWidth, mHeight);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        long now = SystemClock.uptimeMillis();
        if (mStart == 0) {
            mStart = now;
        }
        if (mMovie != null) {
            int duration = mMovie.duration();
            if (duration == 0) {
                duration = 1000;
            }
            int relTime = (int) ((now - mStart) % duration);
            mMovie.setTime(relTime);
            mMovie.draw(canvas, 0, 0);
            invalidate();
        }
    }
    public void setGifImageResource(int id) {
        mInputStream = mContext.getResources().openRawResource(id);
        init();
    }
    public void setGifImageUri(Uri uri) {
        try {
            mInputStream = mContext.getContentResolver().openInputStream(uri);
            init();
        } catch (FileNotFoundException e) {
            Log.e("GIfImageView", "File not found");
        }
    }
}

现在在MainActivity中定义GifImageView 文件:src / activity / MainActivity.class

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GifImageView gifImageView = (GifImageView) findViewById(R.id.GifImageView);
        gifImageView.setGifImageResource(R.drawable.smartphone_drib);
    }
}

现在的UI部件 文件:res / layout / activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:gravity="center"
    android:background="#111E39"
    tools:context=".Activity.MainActivity">
    <com.android.animatedgif.Utils.GifImageView
        android:id="@+id/GifImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

</RelativeLayout>

资源:How to display gif imageview in android