创建一个类MyGifView,java代码如下:
package com.example.gif;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Movie;
import android.util.AttributeSet;
import android.view.View;
public class MyGifView extends View {
private long movieStart;
private Movie movie;
// 重写该构造方法
public MyGifView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
// 以文件流(InputStream)读取进gif图片资源
movie = Movie.decodeStream(getResources().openRawResource(R.drawable.loading));
}
@Override
protected void onDraw(Canvas canvas) {
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);
}
}
xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.gif.MainActivity" >
<com.example.gif.MyGifView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp" />
</RelativeLayout>