• Android 载入gif动画


    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/jhg1204/article/details/24706059

    今天想在应用的Loading页面载入一个gif动画,但又不知道怎么弄,就网上搜了下,看到好多人都是使用ant.cy.liao@gmail.com写的GifView.jar包。
    于是就简单了解了一下:
        看了下作者的源代码,编写的GifView继承自View,那么在使用的时候也就非常方便了,能够当做一个普通的UI组件来用。
        在使用普通的UI组件的时候,我们一般都使用例如以下的方式:   
    <Button
            android:id="@+id/submit"
            android:layout_width="120dp"
            android:layout_height="60dp"
            android:text="@string/submitBtn"
    />
        而对于我们自己定义的UI控件。我们採用的一般为例如以下的方式:
        <包名.类名
            属性:值
            ...
        />
        那么,对于这样的方法,GifView肯定也适用。须要注意的是:GifView所在的包名要写正确。否则你将GifView.jar加入到你的project后,布局文件肯定
    会报错,作者所写的GifView类所在的包名为:com.ant.liao 那么我们就但是使用例如以下方式来写gif动画组件的布局文件了:  
    <com.ant.liao.GifView
            android:id="@+id/gif"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
    />
        PS:须要的属性值自己配置.

        完毕了布局文件,接下来就是要对gif文件进行载入等工作了(在OnCreate中加入例如以下代码):
        gf1 = (GifView) findViewById(R.id.gif);
        // 设置Gif图片源
        gf1.setGifImage(R.drawable.gif);     
        // 设置显示的大小,拉伸或者压缩
        gf1.setShowDimension(400, 400);
        // 设置载入方式:先载入后显示、边载入边显示、仅仅显示第一帧再显示
        gf1.setGifImageType(GifImageType.COVER);

        PS:载入方式的说明:
        看了下作者的源代码。对于载入方式是这样定义的:   
    public enum GifImageType{
            /**
             * 在解码过程中,不显示图片,直到解码所有成功后。再显示
             */
            WAIT_FINISH (0),
            /**
             * 和解码过程同步,解码进行到哪里,图片显示到哪里
             */
            SYNC_DECODER (1),
            /**
             * 在解码过程中,仅仅显示第一帧图片
             */
            COVER (2);
            
            GifImageType(int i){
                nativeInt = i;
            }
            final int nativeInt;
        }
    
        也就是说,作者提供了三种载入方式,使用时可依据不同的需求来定义。
        
        对于动画显示大小的设置,个人认为欠妥,以详细的数字来设置,可能会影响动画的质量。所以要想获取原动画的质量。能够通过获取原动画的大小来设
    置动画的显示区域:   
    bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.gif);
         width = bitmap.getWidth();
         height = bitmap.getHeight();
         gf1.setShowDimension(width, height);
        至此,一个gif动画便已载入完毕!



  • 相关阅读:
    Fastjson
    react 使用createContext、Consumer 及 useContext 、Class.contextType父子组件共享数据
    使用useReducer 实现 todoList
    react中 useMemo与useCallback使用
    react17 函数组件 使用 better-scroll2.0 封装方法 及 使用
    react 执行 yarn build ,无法直接打开dist文件下的index
    react-redux 持久数据存储
    document.body.removeChild 获取到 symbol 标签
    react嵌套路由,并设置默认子路由
    Vagrant环境下配置node_exporter、mysqld_exporter、prometheus、grafana
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10929240.html
Copyright © 2020-2023  润新知