Android中用GifView显示Gif动画及Gifview简介

暂未亲自验证,只是在项目中遇到了gifview.jar包,然后百度所得;


一、Gifview简介

作者:ant.cy.liao

主页:http://code.google.com/p/gifview/

下载:http://code.google.com/p/gifview/downloads/list

一、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文件一起放出,这里先跟大家介绍一下。


 

a、将GifView.jar加入到项目中(不会导入jar包的看这个:http://blog.sina.com.cn/s/blog_821e2bb10100tfup.html);

 

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

 

    <com.ant.liao.GifView
       
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动画,不过没有研究,有意向的可以研究下贴出来!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值