大家知道,在Android中使用ImageView来显示gif格式的图片,我们无法得到gif格式图片该有的效果,它只会停在第一帧上,而不会继续。这时只能看到一张静态的图片,这里我们可以使用个简单的方法,即是使用Movie来显示图片。
1.在main.xml中添加ImageView,指定一张GIF图片为背景;
2.MainActivity.java
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
|
package com.yin.displayGIF; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Movie; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity
{ private MyCustomView
mView; private Movie
mMovie; private long mMovieStart; public void onCreate(Bundle
savedInstanceState) { super .onCreate(savedInstanceState); mView
= new MyCustomView( this ); setContentView(mView); } //
自定义一个类,继承View class MyCustomView extends View
{ public MyCustomView(Context
context) { super (context); //
以文件流的方式读取文件 mMovie
= Movie.decodeStream(getResources().openRawResource( R.drawable.my_picture)); } @Override protected void onDraw(Canvas
canvas) { long curTime
= android.os.SystemClock.uptimeMillis(); //
第一次播放 if (mMovieStart
== 0 )
{ mMovieStart
= curTime; } if (mMovie
!= null )
{ int duration
= mMovie.duration(); int relTime
= ( int )
((curTime - mMovieStart) % duration); mMovie.setTime(relTime); mMovie.draw(canvas, 0 , 0 ); //
强制重绘 invalidate(); } super .onDraw(canvas); } } } |