GifView 是一个为了解决android中现在没有直接显示gif的view,只能通过mediaplay来显示这个问题的项目,其用法和 ImageView一样,支持gif图片。
项目共4个目标文件,项目如图:
效果如图:
分析如下:
GifAction.java 观察者类,监视GIF是否加载成功
GifFrame.java 里面三个成员:当前图片、延时、下张Frame的链接。
GifDecoder.java 解码线程类
GifView.java 主类,包括常用方法,如GifView构造方法、设置图片源、延迟、绘制等。
定义如下:
public interface GifAction {
/**
* gif解码观察者
* @param parseStatus 解码是否成功,成功会为true
* @param frameIndex 当前解码的第几帧,当全部解码成功后,这里为-1
*/
public void parseOk(boolean parseStatus,int frameIndex);
}
//线程操作gif图片解码
public class GifDecoder extends Thread
//gif框架
public class GifFrame
{
/**
* 构造函数
*
* @param im
* 图片
* @param del
* 延时
*/
public GifFrame(Bitmap im, int del)
{
image = im;
delay = del;
}
/** 图片 */
public Bitmap image;
/** 延时 */
public int delay;
/** 下一帧 */
public GifFrame nextFrame = null;
}
/**
* GifView<br>
* 本类可以显示一个gif动画,其使用方法和android的其它view(如imageview)一样。<br>
* 如果要显示的gif太大,会出现OOM的问题。
*
* @author liao
*
*/
public class GifView extends View implements GifAction
应用如下:
1-把GifView.jar加入你的项目。
2-在xml中配置GifView的基本属性,GifView继承自View类,和Button、ImageView一样是一个UI控件。如:
<com.ant.liao.GifView android:id="@+id/gif2"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:paddingTop="4px" android:paddingLeft="14px" android:enabled="false" />
3-在代码中配置常用属性:
// 从xml中得到GifView的句柄
gf1 = (GifView) findViewById(R.id.gif1);
// 设置Gif图片源
gf1.setGifImage(R.drawable.gif1);
// 添加监听器
gf1.setOnClickListener(this);
// 设置显示的大小,拉伸或者压缩
gf1.setShowDimension(300, 300);
// 设置加载方式:先加载后显示、边加载边显示、只显示第一帧再显示
gf1.setGifImageType(GifImageType.COVER);
代码简单易懂!~~
学习的目标是成熟!~~~