如何显示动画GIF?

时间:2015-06-13 01:37:22

标签: android gif

我想要显示动画GIF。

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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/mmouse" />
</RelativeLayout>

我希望显示GIF并循环播放。

2 个答案:

答案 0 :(得分:0)

目前Android不支持在ImageView中显示gif格式。 您可以使用WebView或android.graphics.Movie类。

您可以在https://github.com/miguelgrinberg/Flask-SocketIO/blob/master/example/templates/index.html

中详细介绍

答案 1 :(得分:0)

您可以使用自定义WebView。我就是这样做的,

首先制作自定义WebView视图

public class GifWebView extends WebView {

    public GifWebView(Context context) {
        super(context);
    }

    public GifWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void setGifAssetPath(String pPath) {
        String baseUrl = pPath.substring(0, pPath.lastIndexOf("/") + 1);
        String fileName = pPath.substring(pPath.lastIndexOf("/")+1);
        StringBuilder strBuilder = new StringBuilder();
        strBuilder.append("<html><head><style type='text/css'>body{margin:auto auto;text-align:center;} img{width:100%;} </style>");
        strBuilder.append("</head><body>");
        strBuilder.append("<img src=\"" + fileName + "\" width=\"100%\" /></body></html>");
        String data = strBuilder.toString();
        Log.d(this.getClass().getName(), "data: " + data);
        Log.d(this.getClass().getName(), "base url: " + baseUrl);
        Log.d(this.getClass().getName(), "file name: " + fileName);
        loadDataWithBaseURL(baseUrl, data, "text/html", "utf-8", null);
    }
}

然后将其添加到您的布局中

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

        <com.example.GifWebView
            android:id="@+id/gif_view"
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:scrollbars="none"
            android:visibility="gone" />

</RelativeLayout>

现在加载图片,

gifView = (GifWebView) findViewById(R.id.gif_view);
gifView.setGifAssetPath(image_path);