android实现gif动态图的使用

                       

在android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理。

本文是采用自定义view 然后进行重新onDraw方法来实现

首先自定义View【MyGifView.java】

[java] view plaincopy

/**  * MyGifView.java  * Copyright(C) 2014  * creator:cuiran 2014-5-16 下午2:01:56  */  package com.cayden.videodemo.view;  import com.cayden.videodemo.R;  import android.content.Context;  import android.graphics.Canvas;  import android.graphics.Movie;  import android.util.AttributeSet;  import android.view.View;  /**  * 自定义View 播放gif动画   * @author cuiran  * @version 1.0.0  */  public class MyGifView extends View {      private long movieStart;      private Movie movie=Movie.decodeStream(getResources().openRawResource(R.drawable.football));      private MyGifView(Context context, AttributeSet attrs, int defStyleAttr) {          super(context, attrs, defStyleAttr);          // TODO Auto-generated constructor stub      }      private MyGifView(Context context, AttributeSet attrs) {          super(context, attrs);          // TODO Auto-generated constructor stub      }      public MyGifView(Context context) {          super(context);          // TODO Auto-generated constructor stub      }      /* (non-Javadoc)      * @see android.view.View#onDraw(android.graphics.Canvas)      */      @Override      protected void onDraw(Canvas canvas) {          // TODO Auto-generated method stub              long curTime=android.os.SystemClock.uptimeMillis();          //第一次播放          if (movieStart == 0) {          movieStart = curTime;          }          if (movie != null) {              int duraction = movie.duration();              int relTime = (int) ((curTime-movieStart)%duraction);              movie.setTime(relTime);              movie.draw(canvas, 0, 0);              //强制重绘              invalidate();          }          super.onDraw(canvas);      }  }  
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

然后写Activity

[java] view plaincopy

/**  * GifMainActivity.java  * Copyright(C) 2014  * creator:cuiran 2014-5-16 下午2:10:29  */  package com.cayden.videodemo;  import com.cayden.videodemo.view.MyGifView;  import android.app.Activity;  import android.os.Bundle;  /**  * TODO   * @author cuiran  * @version 1.0.0  */  public class GifMainActivity extends Activity {      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          //第一种 直接使用代码          MyGifView gifView=new MyGifView(getApplicationContext());          setContentView(gifView);          //第二种采用xml 貌似出错了?????  //      setContentView(R.layout.gif_main);      }  }  
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

本来还可以使用布局xml的但是报错了

[java] view plaincopy

<?xml version="1.0" encoding="utf-8"?>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent"       >      <TextView          android:text="====Gif图片测试布局===="          android:layout_height="wrap_content"         android:layout_width="wrap_content"         />       <com.cayden.videodemo.view.MyGifView          android:id="@+id/iv"         android:layout_height="wrap_content"         android:layout_width="wrap_content"         android:layout_margin="20dp"         />   </LinearLayout> 
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/gfdfhjj/article/details/87864813