Android基础篇之显示GIF格式图片

来源:互联网 发布:c语言指针占几个字节 编辑:程序博客网 时间:2024/06/08 18:50

2011-05-25   23:20:17

    大家都知道,如果我们在Android中用ImageView直接显示GIF的图片,图片只会停在第一帧上,而不会继续。这时看到的只是一张静态的图片,没有GIF的效果。我们可以用Movie来显示图片 这个方法较简单;

1.在main.xml中添加ImageView,指定一张GIF图片为背景;

2.MainActivity.java

[java] view plaincopy
  1. package com.yin.displayGIF;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.graphics.Canvas;  
  6. import android.graphics.Movie;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9.   
  10. public class MainActivity extends Activity {  
  11.     private MyCustomView mView;  
  12.     private Movie mMovie;  
  13.     private long mMovieStart;  
  14.       
  15.     public void onCreate(Bundle savedInstanceState) {  
  16.         super.onCreate(savedInstanceState);  
  17.         mView = new MyCustomView(this);  
  18.           
  19.         setContentView(mView);  
  20.     }  
  21.   
  22.      //自定义一个类,继承View  
  23.     class MyCustomView extends View{  
  24.   
  25.         public MyCustomView(Context context) {  
  26.             super(context);  
  27.             //以文件流的方式读取文件  
  28.             mMovie = Movie.decodeStream(  
  29.                     getResources().openRawResource(R.drawable.my_picture));  
  30.         }  
  31.           
  32.         @Override  
  33.         protected void onDraw(Canvas canvas) {  
  34.           
  35.             long curTime = android.os.SystemClock.uptimeMillis();  
  36.             //第一次播放  
  37.             if(mMovieStart == 0){  
  38.                 mMovieStart = curTime;  
  39.             }  
  40.           
  41.             if(mMovie != null){  
  42.                 int duration = mMovie.duration();  
  43.   
  44.                 int relTime = (int)((curTime - mMovieStart)% duration);  
  45.                 mMovie.setTime(relTime);  
  46.                 mMovie.draw(canvas, 00);  
  47.                   
  48.                 //强制重绘    
  49.                 invalidate();  
  50.               
  51.             }  
  52.               
  53.               
  54.             super.onDraw(canvas);  
  55.         }  
  56.     }  
  57.   
  58. }  

原创粉丝点击