仿照apiDemos的例子,com.example.android.apis.graphics.BitmapDecode,直接修改来用:

public class PlayGifActivity extends Activity
{
        
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(new SampleView(this,R.drawable.animated_gif));
    }
        
    private static class SampleView extends View
    {
            
        private Movie mMovie;
        private long mMovieStart;
            
        // Set to false to use decodeByteArray
        private static final boolean DECODE_STREAM = true;
            
        private static byte[] streamToBytes(InputStream is)
        {
            ByteArrayOutputStream os = new ByteArrayOutputStream(1024);
            byte[] buffer = new byte[1024];
            int len;
            try
            {
                while ((len = is.read(buffer)) >= 0)
                {
                    os.write(buffer, 0, len);
                }
            }
            catch (java.io.IOException e)
            {
            }
            return os.toByteArray();
        }
            
        public SampleView(Context context,int resID)
        {
            super(context);
            setFocusable(true);
                
            java.io.InputStream is;
            is = context.getResources().openRawResource(resID);
            if (DECODE_STREAM)
            {
                mMovie = Movie.decodeStream(is);
            }
            else
            {
                byte[] array = streamToBytes(is);
                mMovie = Movie.decodeByteArray(array, 0, array.length);
            }
        }
            
        @Override
        protected void onDraw(Canvas canvas)
        {
            canvas.drawColor(0xFFCCCCCC);
                
            long now = android.os.SystemClock.uptimeMillis();
            if (mMovieStart == 0)
            { // first time
                mMovieStart = now;
            }
            if (mMovie != null)
            {
                int dur = mMovie.duration();
                if (dur == 0)
                {
                    dur = 1000;
                }
                int relTime = (int) ((now - mMovieStart) % dur);
                mMovie.setTime(relTime);
                mMovie.draw(canvas, getWidth() - mMovie.width(), getHeight() - mMovie.height());
                invalidate();//重绘方法,调用下一帧
            }
        }
    }
}