zoukankan      html  css  js  c++  java
  • android gif

    引用:http://blog.sina.com.cn/s/blog_821e2bb10100tfzd.html

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

    一、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); 
    // 设置显示的大小,拉

  • 相关阅读:
    周鸿祎谈程序员创业
    ESP8266-iot-3
    ESP8266文档阅读ESP8266 SDK 入门指南
    ESP8266文档阅读2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf
    ESP8266-iot-2
    ESP8266-iot-简介1
    yum安装mysql
    CentOS安装MySQL详解 转
    centOS7永久关闭防火墙(防火墙的基本使用(转)
    linux下composer安装
  • 原文地址:https://www.cnblogs.com/sode/p/3041539.html
Copyright © 2011-2022 走看看