2012-08-04 68 views
1

我试过这样的,这是我在网上找到发挥GIF图片:Play.gif图像,而无需使用的WebView

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()为空。

请建议我在哪里错了,或者如果有什么方法。

回答

1

如果没有WebView,Android无法播放GIF文件。您必须将其拆分为框架并自行设置动画。

我发现另一个StackOverflow后this bit of software from 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文档中有详细说明。

相关问题