博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android实现gif动态图的使用
阅读量:5896 次
发布时间:2019-06-19

本文共 2536 字,大约阅读时间需要 8 分钟。

在android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理。

本文是采用自定义view 然后进行重新onDraw方法来实现

首先自定义View【MyGifView.java】

[java] view plaincopy

/**  * 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 plaincopy

/**  * 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 plaincopy

转载地址:http://skosx.baihongyu.com/

你可能感兴趣的文章
python类 del_全面了解Python类的内置方法
查看>>
java jni 原理_使用JNI技术实现Java和C++的交互
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>
WinForm窗体缩放动画
查看>>
JQuery入门(2)
查看>>
linux文件描述符
查看>>
传值引用和调用引用的区别
查看>>
Hive简介
查看>>