出处:http://www.bangchui.org/read.php?tid=15854
程序运行效果图
]
在android中如何播放gif动画呢? 有的人用webView,有的人自己写解码gif的函数。对于前一种方法,占用内存太大,对于后者,工作量太大。所以都不是最好的方法。
其实android中有一个类:android.graphics.Movie可以用于播放gif,其实用非常简单.
关键代码如下
- InputStream is = context.getResources().openRawResource(R.drawable.animated_gif);
- mMovie = Movie.decodeStream(is);
- mMovie.draw(canvas, 0,0);
下面是GifView 类代码:
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
|
private
static
class
GifView
extends
View {
private
Movie mMovie;
private
long
mMovieStart;
public
GifView(Context context) {
super
(context);
setFocusable(
true
);
InputStream is = context.getResources().openRawResource(
R.drawable.animated_gif);
mMovie = Movie.decodeStream(is);
}
@Override
protected
void
onDraw(Canvas canvas) {
canvas.drawColor(
0xFFCCCCCC
);
Paint p =
new
Paint();
p.setAntiAlias(
true
);
long
now = android.os.SystemClock.uptimeMillis();
if
(mMovieStart ==
0
) {
// first time
mMovieStart = now;
}
if
(mMovie !=
null
) {
//获取gif的时间长度
int
dur = mMovie.duration();
if
(dur ==
0
) {
dur =
1000
;
}
int
relTime = (
int
) ((now - mMovieStart) % dur);
//设置gif当前播放时间点
mMovie.setTime(relTime);
//绘制gif的当前帧
mMovie.draw(canvas,
0
,
0
);
//出发下一次绘制
invalidate();
}
}
}
|