当前位置: 首页 > 工具软件 > GifView > 使用案例 >

android如何使用gif动画效果,Android中用GifView显示Gif动画及Gifview简介

郎意
2023-12-01

最近项目中要用到是实现Gif格式的动画,查了查Android压根就不支持Gif动画,于是乎就研究下了开源的“Gifview”。

一、Gifview简介

作者:ant.cy.liao

一、GIF动画分割

在编码之后,需要利用第三方的工具将GIF动画分割成一个个的BMP或JPG格式的图片,再通过Android提供的animation类加载这些图片,以实现动画的效果。其实,说来说去,还是利用animation的方法,而且还需要手动分割GIF图片,很是麻烦!但是这种变相的方法也可以实现这个显示动画的功能了。

二、GifView类

去看看开发文档吧,找找这个类GifView类,有木有,有木有?结果是木有。对,这是一位N人写的一个加载Gif动画的类,并且已经将该类做成一个jar类库,供开发者直接加载使用。这个类的使用非常方便,跟普通的UI控件ImageView、Button、TextView等的使用方法都是一样的。

1、原理:

我对这个类的核心不分代码详细分析了一下,基本是按照GIF文件格式,将GIF拆分成一个个BMP图像,然后再将这些BMP图片显示出来。原理跟第一种方法是一样的,但是GifView类将分割GIF图像帧的操作放在一个类中,不需要我们过多的关心GIF是如何拆分的,而且GifView类还提供了一个公开的方法,以方便开发者调用。

2、GifView提供的公开方法

设置GIF动画的数据来源:

public void setGifImage(byte[]

gif){

setGifDecoderImage(gif);

}

public void setGifImage(InputStream is){

setGifDecoderImage(is);

}

public void setGifImage(int resId){

Resources r =

this.getResources();

InputStream is =

r.openRawResource(resId);

setGifDecoderImage(is);

}

控制GIF动画的显示模式:动态或者静态

public void showCover(){ if(gifDecoder == null) return;

pause = true;

currentImage =

gifDecoder.getImage();

invalidate();

}

public void showAnimation(){ if(pause){

pause = false;

}

}

设置GIF动画的显示比例:

public void setShowDimension(int width,int height){

if(width > 0 &&

height > 0){

showWidth = width;

showHeight =

height;

rect = new Rect();

rect.left = 0;

rect.top = 0;

rect.right =

width;

rect.bottom =

height;

}

}

设置GID动画显示的方式:(三种)

先加载后显示:GifImageType.WAIT_FINISH

边加载边显示:GifImageType.SYNC_DECODER

只显示第一帧再显示:GifImageType.COVER

public void setGifImageType(GifImageType type){

if(gifDecoder == null)

animationType =

type;

}

3、使用方法

具体的使用方法,将在文章的最后与GifView类的源代码和jar文件一起放出,这里先跟大家介绍一下。

b、在布局文件中加入GifView控件,并设置GifView的基本属性:包括ID、宽度、高度、边距等等,与其他UI类似

android:id="@+id/gif1" android:layout_height="wrap_content" android:layout_width="wrap_content"android:paddingRight="14px" android:enabled="false" />

c、在代码中添加控件实例,并加载显示。

// 从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);

其实Android还能用WebView显示Gif动画,不过没有研究,有意向的可以研究下贴出来!

 类似资料: