【问题标题】:android- best way to play a gif animationandroid-播放 gif 动画的最佳方式
【发布时间】:2014-12-31 20:19:20
【问题描述】:

播放 gif 动画的方法和库有很多。我尝试了一些,效果很好。 问题是,最好的方法是什么?最好的意思是,一种尽可能减少内存空间的方法,不会在旧设备上成为逐帧帧。

我有一个小而短的 gif 动画,它是海浪,我想把它放在我的应用程序上。该应用程序在 android 2.2 + 上运行。

你能给我最好的方法吗?

国王的问候

【问题讨论】:

标签: android android-animation


【解决方案1】:

使用以下代码在您的应用程序中播放 gif:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Movie;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;

public class GifActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new GifView(this));
    }

    static class GifView extends View {
        Movie movie;
        GifView(Context context) {
            super(context);
            File myFile = new File("/sdcard/test.gif");
            InputStream fis = null;
            try {
                fis = new BufferedInputStream(new FileInputStream(myFile),
                        16 * 1024);
                fis.mark(16 * 1024);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            movie = Movie.decodeStream(fis);
            Log.e("SS", "movie.duration()" + movie.duration());

        }

        @Override
        protected void onDraw(Canvas canvas) {
            try {
                if (movie != null) {
                    movie.setTime((int) SystemClock.uptimeMillis()
                            % movie.duration());
                    movie.draw(canvas, 0, 0);
                    invalidate();
                }
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }

        }
    }
}

在您的应用程序中播放 gif 不需要任何 3rd 方库。

【讨论】:

  • 一个问题,播放gif需要整个活动吗?我有一个布局,我需要为此活动使用我的布局,而不是在整个活动上显示 gif。该怎么办?
  • 不,它不需要整个活动。它只显示gif的原始宽度和高度
猜你喜欢
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 2021-04-28
  • 2013-06-23
  • 2014-12-29
  • 2021-05-17
相关资源
最近更新 更多