Android支持GIF动画,但是如果利用ImageView标签直接写在布局文件中:
<ImageViewandroid:id="@+id/gifpicture"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/animation" />
程序只能加载GIF动画的第一帧。效果如下:
如果想要正常播放GIF动画,需要借助Movie实现。写了一个简单示例,程序目录结构如下:animation.gif是需要播放的GIF动画。MainActivity实现了加载GIF动画的功能。
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
|
publicclass MainActivity extends Activity {
private Movie mMovie;
privatelong mMovieStart;
/** Called when the activity is first created. */
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView( new CustomGifView( this ));
}
class CustomGifView extends View {
public CustomGifView(Context context) {
super (context);
mMovie = Movie.decodeStream(getResources().openRawResource(
R.drawable.animation));
}
publicvoid onDraw(Canvas canvas) {
long now = android.os.SystemClock.uptimeMillis();
if (mMovieStart == 0 ) {
mMovieStart = now;
}
if (mMovie != null ) {
int dur = mMovie.duration();
if (dur == 0 ) {
dur = 1000 ;
}
int relTime = ( int ) ((now – mMovieStart) % dur);
mMovie.setTime(relTime);
mMovie.draw(canvas, 0 , 0 );
invalidate();
}
}
}
}
|
内部类CustomGifView 利用Movie播放GIF动画。解释一下:mMovie = Movie.decodeStream(getResources().openRawResource(R.drawable.animation));
将GIF动画以文件流的形式转换成Movie。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
publicvoid onDraw(Canvas canvas) {
long now = android.os.SystemClock.uptimeMillis();
if (mMovieStart == 0 ) {
mMovieStart = now;
}
if (mMovie != null ) {
int dur = mMovie.duration();
if (dur == 0 ) {
dur = 1000 ;
}
int relTime = ( int ) ((now – mMovieStart) % dur);
mMovie.setTime(relTime);
mMovie.draw(canvas, 0 , 0 );
invalidate();
}
}
|
invalidate();作用是刷新当前View,这样onDraw方法重复执行,Movie就能画出GIF动画的每一帧。到此,GIF动画就能正常播放了。
还有一种方法是根据配置文件,设置播放帧,显然是不推荐的。当然想了解,请看 http://developer.aiwgame.com/
分享到:
相关推荐
android播放gif动画
Android 播放Gif 动画,Android 播放Gif 动画
android 播放gif动画 android 播放gif动画 android 播放gif动画 android 播放gif动画 android 播放gif动画
Android中显示GIF动画的小例子,分享一下。
博客地址:http://blog.csdn.net/lowprofile_coding/article/details/47782169 Android播放gif动画,增加屏幕掉金币效果
Android 播放Gif图片动画【源代码】,在Android 中是不支持直接使用Gif 图片关联播放帧动画,Android 提供了另外一种解决的办法,就是使用AnimationDrawable 这一函数使其支持逐帧播放,我们使用一款动画分割软件...
Android播放Gif动画[收集].pdf
NULL 博文链接:https://wangleyiang.iteye.com/blog/1738917
NULL 博文链接:https://byandby.iteye.com/blog/833051
Android GIf动画连续播放 GIf动画引擎的简单实现
Android 扩展ImageView来播放gif动画
由于做的项目,要有个动画的等待效果,第一时间想到的就是Gif(懒,省事),但是试了好多据说能播放Gif的控件,也写过,但是放到魅族手机上就是不能播放,所有就想了个招,既然Gif能在浏览器上播放,那android 的 WebView ...
Android 显示GIF动画源码.实例源码,直接打开
可以实现gif动画播放,已经封装好jar包可以直接使用
Android是不能播放gif动画的,所以我们经常用图片轮播代替,但是在xml文件中写播放图片时,不能很好地控制播放和停止,所以这里就自定义了一个Gif播放的view,可以播放、停止、添加播放源和设置播放时间间隔。
实现TextView 中Gif表情动画功能
由于android没有自带的gif动画,有个神人写第三方的库,我改了下代码,实现了gif动画显示,在项目中很有用。
Android实现Gif动画