• Android中显示gif动态图片


    在Android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理。
    
    本文是采用自定义view 然后进行重新onDraw方法来实现
    
    首先自定义View【MyGifView.java】
    
    [java] view plain copy
    在CODE上查看代码片派生到我的代码片
    
        /** 
         * MyGifView.java 
         * Copyright(C) 2014 
         * creator:cuiran 2014-5-16 下午2:01:56 
         */  
        package com.cayden.videodemo.view;  
          
        import com.cayden.videodemo.R;  
          
        import android.content.Context;  
        import android.graphics.Canvas;  
        import android.graphics.Movie;  
        import android.util.AttributeSet;  
        import android.view.View;  
          
        /** 
         * 自定义View 播放gif动画  
         * @author cuiran 
         * @version 1.0.0 
         */  
        public class MyGifView extends View {  
          
            private long movieStart;  
              
            private Movie movie=Movie.decodeStream(getResources().openRawResource(R.drawable.football));  
          
          
            private MyGifView(Context context, AttributeSet attrs, int defStyleAttr) {  
                super(context, attrs, defStyleAttr);  
                // TODO Auto-generated constructor stub  
            }  
          
            private MyGifView(Context context, AttributeSet attrs) {  
                super(context, attrs);  
                // TODO Auto-generated constructor stub  
            }  
              
            public MyGifView(Context context) {  
                super(context);  
                // TODO Auto-generated constructor stub  
                      
            }  
          
              
          
            /* (non-Javadoc) 
             * @see android.view.View#onDraw(android.graphics.Canvas) 
             */  
            @Override  
            protected void onDraw(Canvas canvas) {  
                // TODO Auto-generated method stub  
                    long curTime=android.os.SystemClock.uptimeMillis();  
                //第一次播放  
                if (movieStart == 0) {  
                movieStart = curTime;  
                }  
                if (movie != null) {  
                    int duraction = movie.duration();  
                    int relTime = (int) ((curTime-movieStart)%duraction);  
                    movie.setTime(relTime);  
                    movie.draw(canvas, 0, 0);  
                    //强制重绘  
                    invalidate();  
                }  
                super.onDraw(canvas);  
                  
                  
            }  
          
              
        }  
    
    
    然后写Activity
    
    [java] view plain copy
    在CODE上查看代码片派生到我的代码片
    
        /** 
         * GifMainActivity.java 
         * Copyright(C) 2014 
         * creator:cuiran 2014-5-16 下午2:10:29 
         */  
        package com.cayden.videodemo;  
          
        import com.cayden.videodemo.view.MyGifView;  
          
        import android.app.Activity;  
        import android.os.Bundle;  
          
        /** 
         * TODO  
         * @author cuiran 
         * @version 1.0.0 
         */  
        public class GifMainActivity extends Activity {  
          
              
            @Override  
            protected void onCreate(Bundle savedInstanceState) {  
                super.onCreate(savedInstanceState);  
                  
                //第一种 直接使用代码  
                MyGifView gifView=new MyGifView(getApplicationContext());  
                setContentView(gifView);  
                  
                //第二种采用xml 貌似出错了?????  
        //      setContentView(R.layout.gif_main);  
            }  
        }  
    
    本来还可以使用布局xml的但是报错了
    
    [java] view plain copy
    在CODE上查看代码片派生到我的代码片
    
        <?xml version="1.0" encoding="utf-8"?>  
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
            android:layout_width="match_parent"  
            android:layout_height="match_parent"  
             >  
              
            <TextView   
               android:text="====Gif图片测试布局===="  
                android:layout_height="wrap_content"  
               android:layout_width="wrap_content"  
               />  <span id="transmark"></span>
              
             <com.cayden.videodemo.view.MyGifView   
               android:id="@+id/iv"  
               android:layout_height="wrap_content"  
               android:layout_width="wrap_content"  
               android:layout_margin="20dp"  
               />   
        </LinearLayout>  
    
    
    以上是部分代码,仅供参考!


  • 相关阅读:
    常用作图与图片处理工具
    在博客园中配置MathJax
    Make Eudict for reviewing example sentences
    使用AltSearch格式化Kindle读书笔记
    Deep Learning基础--理解LSTM/RNN中的Attention机制
    Deep Learning基础--理解LSTM网络
    Deep Learning基础--SVD奇异值分解
    常见面试之机器学习算法思想简单梳理
    Deep Learning基础--CNN的反向求导及练习
    Deep Learning基础--线性解码器、卷积、池化
  • 原文地址:https://www.cnblogs.com/miaozhenzhong/p/5931017.html
Copyright © 2020-2023  润新知