zoukankan      html  css  js  c++  java
  • 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>  
    
    
    以上是部分代码,仅供参考!


  • 相关阅读:
    MySQL InnoDB事务隔离级别脏读、可重复读、幻读
    数据结构与算法-Python/C
    Go语言 转至Nick老师博客
    短信验证功能、邮箱验证功能
    psutil模块
    简单邮件传输协议SMTP
    CSS3主要的几个样式笔记
    cURL的几个经典实例
    Socket进程通信机制
    对PDO的认识
  • 原文地址:https://www.cnblogs.com/miaozhenzhong/p/5931017.html
Copyright © 2011-2022 走看看