如何在安卓手机上播放GIF文件?

5

我想在当前活动中播放一个GIF文件。

我有一个XML文件,其中有一个布局。

我想在同一个类的Activity中播放GIF。

有没有简单的方法在Activity类中播放GIF文件?


http://www.anddev.org/how_to_play_gif_file_in_android-t3492.html - Nikunj Patel
1
你尝试过在Webview中显示GIF吗? - TeaCupApp
1
将GIF文件转换为.PNG文件并应用帧动画。 - Randroid
朋友们,我有10个GIF需要以不同的动作运行。我们的开发不允许使用XML帧动画。所以如果有人知道如何通过编程运行GIF,请告诉我。 - Siten
我认为只有以前的方法可以做到这一点。 - Nikunj Patel
4个回答

6
您可以使用webView。 我将用一个示例来展示:
您可以使用 webView。以下是一个示例:
//My activity
public class Gift_Loading extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Gif_loading_View view = new Gif_loading_View(this); 
        setContentView(view);
    }

}

//the webView
public class Gif_loading_View extends WebView{

    public Gif_loading_View(Context context) {

        super(context);     
        loadUrl("file:///android_asset/loading_position.html");

        } 
}

在资源文件夹中添加这个HTML文件:
<html>
<body bgcolor="white">
    <table width="100%" height="100%">
        <tr>
            <td align="center" valign="center">                
                <br/>
                <br/>
                <br/>
                <font size="6">Please wait...</font>
                <br/>
                <br/>
                <img src="cyclist_loading.gif" />

            </td>
        </tr>
    </table>
</body>

2

Android不支持播放动态GIF文件。如果需要播放它们,则需要将其拆分为帧,并逐帧进行动画处理。

这将允许您拆分GIF文件。 http://www.xoyosoft.com/gs/


我很高兴得到了答案,但是:使用画布,我们可以轻松播放gif文件。 - Siten
不,你不能播放GIF文件,但是一旦你将它们分解成单个的可绘制对象,你就可以使用AnimationDrawable来对它们进行动画处理。http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html - Ollie C

0
<pl.droidsonroids.gif.GifTextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/first"
    />

使用代码和您的gif文件放入drawable文件夹中,然后将名称更改为您的gif文件名称。

0

这里有一个示例链接, 其中创建了一个自定义的AnimatedGifView类。

它使用了android.graphics.Movie类,并重写了onDraw方法来定期重新绘制视图。以下是摘录:

gifInputStream = context.getResources().openRawResource(R.drawable.myGIFImage);
gifMovie = Movie.decodeStream(gifInputStream);
gifMovie.setTime((int)movieRunDuration);
gifMovie.draw(canvas, 0, 0);

然而,更合适的做法可能是将动画GIF转换为AnimationDrawables


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