1

我试过这样,我在网上找到了播放 gif 图像:

private class MYGIFView extends View {

    Movie movie;
    InputStream is = null;
    long moviestart;

    public MYGIFView(Context context) {
        super(context);

        // Provide your own gif animation file

        is = context.getResources().openRawResource(R.drawable.mygif);
        movie = Movie.decodeStream(is);

    }

    @Override
    protected void onDraw(Canvas canvas) {

        canvas.drawColor(Color.WHITE);
        super.onDraw(canvas);
        long now = android.os.SystemClock.uptimeMillis();
        System.out.println("now=" + now);
        if (moviestart == 0) { // first time
            moviestart = now;

        }
        System.out.println("\tmoviestart=" + moviestart);
        int relTime = (int) ((now - moviestart) % movie.duration());
        System.out.println("time=" + relTime + "\treltime="
                + movie.duration());
        movie.setTime(relTime);
        movie.draw(canvas, this.getWidth() / 2 - 20,
                this.getHeight() / 2 - 40);
        this.invalidate();
    }

尽管许多人说他们得到了他们想要的结果。

我已将 gif 图像放入 drawable 中。我得到 movie.duration() null。

请提出我哪里错了或者有什么办法。

4

1 回答 1

1

没有 .Android 就无法播放 GIF 文件WebView。您必须将其拆分为帧并自己为其设置动画。

我在另一个 StackOverflow 帖子中发现了 XoyoSoft 的这款软件,称为 GifSplitter,它可以将 GIF 分割成帧。然后你会想用它们AnimationDrawable来组合它们。

它看起来像这样:

// Your files:
res\drawable-xxxx\frame1.jpg
res\drawable-xxxx\frame2.jpg
res\drawable-xxxx\frame3.jpg
// ...
res\drawable-xxxx\frame99.jpg

然后,上面的文档中有一个示例AnimationDrawable将显示如何显示这些图像。

最后,您必须加载和播放动画;文档中也对此进行了详细AnimationDrawable说明。

于 2012-08-04T06:13:49.070 回答